我正在做一個非常簡單的操作;打開一個csv文件,刪除第一列,然後寫出一個新文件。下面的代碼工作正常,但它需要50-60秒,在我的700 MB的文件:在csv模塊中提高csv.reader/csv.writer的速度
import csv
from time import time
#create empty output file
f = open('testnew.csv',"w")
f.close()
t = time()
with open('test.csv',"rt") as source:
rdr= csv.reader(source)
with open('testnew.csv',"a") as result:
wtr= csv.writer(result)
for r in rdr:
del r[0]
_ = wtr.writerow(r)
print(round(time()-t))
相比之下,下面的shell腳本做同樣的事情在7-8秒:
START_TIME=$SECONDS
cut -d',' -f2- <test.csv> testnew.csv
echo $(($SECONDS - $START_TIME))
有沒有一種方法可以在Python中獲得可比較的性能?
我把你的代碼用相關的'with open'語句取樣,並用'_ = result.write'代替'source.write'。結果代碼仍然比@ histrio的解決方案長30-40%。 – zkurtz
我的代碼和histrio之間唯一重要的區別是處理行中沒有','的情況。如果你確定不可能發生,或者如果確實發生異常,那麼使用稍簡單的代碼即可。 –