我正在尝试为前面提到的任务创建一个函数,用于将新字段添加到存储在一个文件夹中的某些文件中。我阅读了Python中的函数方法,并遵循了它,但它不起作用。如果有人能指导我,我会很高兴的。你知道吗
def newfield(infile,outfile):
infile.readlines()
outfile = ["%s\t%s" %(item.strip(),2) for item in infile]
outfile.write("\n".join(output))
outfile.close()
return outfile
然后我试着称之为:
a = open("E:/SAGA/data/2006last/test/325145404.all","r")
b = open("E:/SAGA/data/2006last/test/325145404_edit.all","w")
newfield(a,b)
此外,当我们创建一个函数时,我们应该在同一个python shell中调用它,还是可以将它作为一个文件来调用它?你知道吗
问题似乎是您将生成的列表分配给与
output
文件相同的名称。您还读取文件中的所有行,而不将结果分配到任何位置,因此当您的列表理解对其进行迭代时,它已经位于文件的末尾。所以你可以去掉readlines
行。你知道吗行
infile.readlines()
消耗整个输入文件。所有的行都会被读取和遗忘,因为它们没有分配给变量。你知道吗构造
["%s\t%s" %(item.strip(),2) for item in infile]
是一个列表理解。此表达式返回一个列表。通过将其赋给变量outfile,outfile的旧值(可能是一个文件对象)将被遗忘,并由列表返回的列表替换。此列表对象没有写入方法。通过将列表分配给另一个变量,outfile中的file对象将被保留。你知道吗试试这个:
相关问题 更多 >
编程相关推荐