[英]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.