根据第二列的值在csv中选择一个项目

时间:2018-10-12 07:49:00

标签: python

我正在尝试根据csv将文件复制到另一个文件夹。我的csv包含我的文件夹中的文件列表。但是如何根据第二列对其进行过滤?例如,如果第二列包含“未检测到”,则仅复制此文件。

这是我的代码,但我不知道如何过滤文件。这会将我的所有文件复制到另一个文件夹。

import os
import shutil
import csv

valid_files = set()  # empty set
with open('sha1_vsdt.csv', 'r') as f:
    for rowDict in csv.reader(f, delimiter=','):
       valid_files |= {rowDict[0] and "Undetected" in rowDict [2] }  # add file name to set
       print(rowDict)  # if desired


dir_src = 'C:\Users\Administrator\Desktop\OJT\scanner\\samples_extracted'
dir_dst = 'C:\Users\Administrator\Desktop\OJT\scanner\\transfer'
for file in os.listdir(dir_src):
    if file in valid_files:
        src_file = os.path.join(dir_src, file)
        dst_file = os.path.join(dir_dst, file)
        shutil.copy(src_file, dst_file)

我如何更正此行?

valid_files |= {rowDict[0] and "Undetected" in rowDict [2] }  # add file name to set

我的csv的示例条目

0191a23ee122bdb0c69008971e365ec530bf03f5,aaa,MIME 6010-0
02b809d4edee752d9286677ea30e8a76114aa324,bbb,Microsoft RTF 6008-0
0349e0101d8458b6d05860fbee2b4a6d7fa2038d,ccc,Adobe Portable Document Format(PDF) 6015-0
035a7afca8b72cf1c05f6062814836ee31091559,ddd,Adobe Portable Document Format(PDF) 6015-0
042065bec5a655f3daec1442addf5acb8f1aa824,eee,Undetected
04939e040d9e85f84d2e2eb28343d94a50ed46ac,fff,Undetected

1 个答案:

答案 0 :(得分:2)

if应该是所有必需的内容:

for rowDict in csv.reader(f, delimiter=','):
    if "Undetected" in rowDict[2]:
        valid_files.add(rowDict[0])