2016-05-04 15 views
0

CSVファイルの2列目のすべての行に文字列(@ example.com)を追加し、古い文字列を新しい文字列に置き換えようとしています。新しい文字列で保存されました。例:CSVファイルの文字列を置換してファイルに書き込む

旧:

John Smith, JohnSmith, Staff 

新:ここで

John Smith, [email protected], Staff 

は私の実際のコードです:あなたが見ることができるように

f2 = open('/root/Downloads/UserAccounts/Users-7-21-2014.csv','w') 
f3 = open('/root/Downloads/UserAccounts/Users-12-06-2012.csv') 
f4 = open('/root/Downloads/UserAccounts/Users-05-13-2007.csv') 

# adds the first and last name together and adds @examples to userID 
# but does not replace first and last name into one 
for row in f2.readlines(): 
    m = row.split(',')[0], row.split(',')[1] 
    j = row.split(',')[2] + "@example.com" 
    row = row.replace(row.split(',')[2], j) 
    f2.write(row) #error is here 

# adds first and last name together 
# but does not replace first and last name into one 
for row in f3.readlines(): 
    n = row.split(',')[0], row.split(',')[1] 
    # print n 

# adds @example.com to username 
for row in f4.readlines(): 
    t = row.split(',')[1] + "@example.com" 
    row = row.replace(row.split(',')[1], t) 
    # print row 

、私はF2ファイルで遊んでいます新しいデータでCSVを上書きしようとしています。しかし、私は 'w'または 'a'のいずれかでファイルを開こうとすると、私はを取得し続けるIOError:のf2.write(行)のファイルが開けません。しかし、私は行変数を印刷するだけで、必要なものを正確に印刷します。私は読んでいると同時にそれを上書きしようとしているので、おそらくこのエラーが発生しています。

2列目のすべての行に@ example.comを追加して、同じCSVファイルで実際に変更されるように保存するにはどうすればよいですか?

私は本当に面倒なコードを知っていますが、私は初心者です。これはそれを扱う私の方法ですので、私に休憩を与えてください。ヘルプをいただければ幸いです。

答えて

0

同じファイルを読み書きすることはお勧めしません。とにかくやりたいのなら、次のようにしてください:

with open('/root/Downloads/UserAccounts/Users-7-21-2014.csv','r') as f2: 
    Rows = f2.readlines() 

with open('/root/Downloads/UserAccounts/Users-7-21-2014.csv','w') as f2: 
    for row in Rows: 
     #do something with the row here 
     f2.write(row) 
関連する問題