CSVファイルの各行のファイルを作成するスクリプトがあります。しかし、どういうわけか、新しく作成されたファイルの最後に空白行が追加されています。
コード:
with open(fullCSV, 'r') as f:
reader = csv.reader(f)
csvList = list(reader)
for item in csvList:
if not os.path.exists(tempLoc + item[0]):
os.mkdir(tempLoc + item[0])
with open(tempLoc + item[0] + r"\prm.263", "w+") as f:
csv.writer(f).writerow(item[1:])
f.close
作成時に空白行を削除する方法はありますか?
前もって感謝します
編集:
問題はcsvモジュールです。の出力から行末文字を取り除く方法がないことがわかりwriterow()
ます。結局のところ、csvモジュールは、行を繰り返し書き込むことができると想定しています。
writer.writerow(row1)
writer.writerow(row2)
...
したがって、それを機能させるには、すべての行出力で改行を発行する必要があります。しかし、あなたの質問は、ファイルの終わりにある改行を削除することです。したがって、間にステップを追加することを検討できます:( Python 3 ioモジュールを使用)
with open(tempLoc + item[0] + r"\prm.263", "w+") as f:
g = io.StringIO()
csv.writer(g).writerow(item[1:])
f.write(g.getvalue().rstrip())
上記では、StringIO
ファイルのようなオブジェクトcsv.writer()
を作成し、ライターにファイルではなくバッファーに書き込むように依頼します。すべての行の書き込みが終了したら、バッファを読み取りg.getvalue()
、最後の空白(つまり、改行)を取り除き、ファイルに書き込みます。
興味がある場合は、これがcsvモジュールが各行に提供するものです。
>>> import io
>>> f = io.StringIO()
>>> import csv
>>> csv.writer(f).writerow([1,2,3,4])
9
>>> f.getvalue()
'1,2,3,4\r\n'
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加