我有一个csv文件partList.csv
,其中包含我想用来搜索更大的txt文件组的字符串。出于某种原因,当我使用直接字符串' L 99 '我得到了一个结果。当我从csv加载字符串 L 99 时,我得不到结果。
partList.csv
仅包含第一列中包含部件号的单元格,其中一个是 L-99 。 txt_files_sample\5.txt
是一个文本文档,在某些时候包含字符串 L 99
我的代码:
def GetPartList():
partList = []
f = open('partList.csv', 'rb')
try:
reader = csv.reader(f)
for row in reader:
part = row[0].replace('-',' ').strip()
partList.append(part)
finally:
f.close()
return partList
def FindFileNames(partList):
i = 0
files = []
for root, dirs, filenames in os.walk('txt_files_sample'):
for f in filenames:
document = open(os.path.join(root, f), 'rb')
for line in document:
if partList[i] in line:
#if 'L 99' in line:
files.append(f)
break
i = i + 1
return files
print FindFileNames(GetPartList())
代码如上所示产生:
>>> []
如果我取消注释if 'L 99' in line:
并注释掉if partList[i] in line:
,我会得到结果:
>>> ['5.txt']
答案 0 :(得分:0)
因此,使用Martijn's输入,我发现问题是我如何循环partList
。重写FindFileNames()
工作:
def FindFileList(partList):
i = 0
files = []
for root, dirs, filenames in os.walk('txt_files'):
for f in filenames:
a = 0
document = open(os.path.join(root, f), 'rb')
for line in document:
if a is 1:
break
for partNo in partList:
if partNo in line:
files.append(f)
a = 1
document.close()
return files
使用更新的代码,我得到的结果是一个准确的文件名列表。