繁体   English   中英

在Python中为add_new_field创建一个函数

[英]Create a function for add_new_field in Python

我正在尝试为前面提到的任务创建一个函数,该函数用于向存储在一个文件夹中的某些文件添加新字段。 我阅读了有关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行。

def newfield(infile,outfile):
    output = ["%s\t%s" %(item.strip(),2) for item in infile]
    outfile.write("\n".join(output))
    outfile.close()
    return outfile

infile.readlines()占用了整个输入文件。 读取并忘记了所有行,因为它们未分配给变量。

构造["%s\\t%s" %(item.strip(),2) for item in infile]是一个列表["%s\\t%s" %(item.strip(),2) for item in infile] 该表达式返回一个列表。 通过将其分配给变量outfile,outfile的旧值(可能是文件对象)将被忘记,并由列表推导返回的列表取代。 此列表对象没有写方法。 通过将列表分配给另一个变量,可以保留outfile中的文件对象。

尝试这个:

def newfield(infile,outfile):
    items = ["%s\t%s" %(item.strip(),2) for item in infile]
    outfile.write("\n".join(items))
    outfile.close()
    return outfile

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM