2016-08-15 4 views
-6

すべてのCSVファイルを特定のディレクトリにループして読み込み、すべての部分文字列_0に置き換えるスクリプトを作成しようとしています。ディレクトリ内のすべてのファイルを開き、同じファイルに変更を保存するにはどうすればよいですか?

私のコードは次のとおりです。

import csv 
f = open ('Tripdata_30_20160806.CSV') 
csv_f = csv.reader(f) 
for i in csv_f: 
    for l in i: 
     if "_" in l: 
      print l.replace("_", "0") 
      print l 
    continue 
f.close() 

私の出力は、次のとおりです。

2199725502 
21997255_2 
2199868606 
21998686_6 
2199726205 
21997262_5 
1756520101 
17565201_1 
1756384803 
17563848_3

どのように私は、ファイル名を指定せずに指定されたディレクトリ内のすべてのファイルを読めるようにすることができますか? CSVファイル名は動的です。

第2に、どのようにして同じファイルに変更を保存することができますか?

+3

をあなたの試みをご提示ください。 – Julien

+3

https://stackoverflow.comは無料のスクリプト/コード作成サービスではありません。これまでに試したこと(既に使用しているスクリプト/コードを含める)とどこにいるのかを教えていただければ、特定の問題を解決することができます。 [良い質問をするにはどうすればいいですか?](https://stackoverflow.com/help/how-to-ask)も読んでください。 – DavidPostill

+0

私はコードを追加していないことに気づいていません... あなたの悪いフィードバックを変更してください。 –

答えて

0

ファイル内のすべてのアンダースコアを置き換えたい場合は、CSVモジュールを気にする必要はありません。単にファイルを読み、アンダースコアを置き換えて、変更されたテキストをファイルに書き戻します。

filename = 'C:\\path\\to\\file.csv' 

f = open(filename) 
txt = f.read() 
f.close() 

f = open(filename, 'w') 
f.write(txt.replace("_", "0")) 
f.close() 

あなたがos.listdir()を使用することができ、ディレクトリの内容を列挙するには、次の

import os 

d = 'C:\\some\\folder' 

for f in os.listdir(d): 
    filename = os.path.join(d, f) 
+0

ありがとう列挙作業素晴らしい –

関連する問題