我正在尝试根据某些条件从文件创建列表,然后过滤这些项目并将其写入另一个文件。我有以下内容,但是新文件为空。
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")
答案 0 :(得分:1)
在开始编写任何内容之前,请先做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")
答案 1 :(得分:-2)
您应该先致电filteredlines.sort()
,然后在filteredlines: fd.write(line)
中拨打电话