簡體   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