我有一個文件,我正在通過FTP下載。這是一個非常大的文件,所以我只想得到第一個說法,現在可以使用20行。我想將這20行寫入本地機器上的新文件。在這個過程中,我想匹配行中的一個值。從文件中獲取前x行,並在子串上匹配
該文件是管道分隔每行的開頭是這樣的:
9999-12-31 | XX | ...
我只想寫入到輸出文件時第二個字段的值是XX,否則忽略它。
這裏是我的代碼的基礎:
def writeline(line):
file.write(line + "\n")
file = open(localDir + fileName, "w+")
ftp.retrlines("RETR '" + remotePath + "'", writeline)
的
所有這些代碼工作正常,下載的文件,如果我要輸出的整個文件。我試圖在我的writeline
函數中放入一個while循環,但它只是將我在循環中指定的次數寫入每行,這在事後看來是有道理的。似乎while循環需要以某種方式在
retrlines
函數中。
我對Python很新,所以我很感謝您提供的任何幫助,以及對我的noob問題的耐心等待。
更新 好吧,它看起來像匹配的子串,我可以這樣做:
line[11:13]
但仍留給我的努力只得到第一個X線與正常工作的問題。
你可以嘗試在回調函數中使用itertools.islice –
這是否需要成爲更大程序的一部分。我會考慮只使用awk而不是python,這就是它的用途。它可能是這樣的,'''awk -F | {if(NR <21){print $ 2}}> new_file.txt'''您可能會打開一個管道到文件以提供awk,因此您不必在本地擁有它,因爲您提到了大小。 – dave