我正在尝试根据某些条件从文件创建列表,然后过滤这些项并将它们写入另一个文件。我有以下内容,但新文件为空。
def readlinesfromfilecriteria(filename, criteria = ['M','S','T']):
fd =open(filename)
lines = fd.readlines()
filteredlines = []
fd.close()
for l in lines:
if l[0] in criteria:
filteredlines.append(l)
return filteredlines
fd=open('2015PopEstimateSubset.csv','w')
fd.write(filteredlines.sort)
fd.close
readlinesfromfilecriteria("2015PopEstimatesComplete.csv")
你在开始写任何东西之前做return
。重新排列代码以修复它,很可能你想在写入后移动return
。此外sort()
没有返回任何东西,但在原地排序,所以你的write()
是静脉。您需要使用sorted()
或对列表进行排序然后编写。
您还应该使用with ...
语法进行文件访问或添加正确的错误处理。
所以你很可能想要这个:
def readlinesfromfilecriteria(filename, criteria = ['M','S','T']):
with open(filename) as fd:
lines = fd.readlines()
filteredlines = [l for l in lines if l[0] in criteria]
with open('2015PopEstimateSubset.csv','w') as fd:
fd.write(sorted(filteredlines))
readlinesfromfilecriteria("2015PopEstimatesComplete.csv")
你应该调用filteredlines.sort()
,然后调用filteredlines: fd.write(line)
中的行