[英]How to write multiple rows in csv python with loop
嗨,我正在使用這種方法從 csv 文件中寫入 csv 文件,這是一個散列代碼,但我只收到 output 中的最后一行,如何將每一行添加到前一行?
import hashlib
import csv
d = dict()
result = ()
for i in range(0 , 9999) :
n = hashlib.sha256(str(i).encode())
d[n.hexdigest()] = str(i)
with open('/Users/MJ-Mac/Desktop/karname.txt') as f:
file = csv.reader(f)
for row in file :
a = row[0]
b = d[row[1]]
result = (a , b)
with open('/Users/MJ-Mac/Desktop/result3.txt', 'w') as f2:
file2 = csv.writer(f2)
file2.writerow(result)
其他答案建議用'a'
替換'w'
,使用csv.writer
時沒有必要這樣做。 每次運行程序時,它還可能使您的文件增長。
與其重新打開和關閉 relut3.txt,不如保持打開狀態並僅使用一位編寫writer
import hashlib
import csv
d = dict()
result = ()
for i in range(0 , 9999) :
n = hashlib.sha256(str(i).encode())
d[n.hexdigest()] = str(i)
with open('/Users/MJ-Mac/Desktop/result3.txt', 'w') as result_file:
result_writer = csv.writer(result_file) # only create this once
with open('/Users/MJ-Mac/Desktop/karname.txt') as f:
file = csv.reader(f)
for row in file :
a = row[0]
b = d[row[1]]
result = (a , b)
result_writer.writerow(result) # use the already created writer
您的代碼正在向文件寫入一行,然后再次打開文件並將下一行寫入程序的全部內容。 所以在第二次循環中只有第二行會在文件中。
import hashlib
import csv
d = dict()
result = ()
for i in range(0 , 9999) :
n = hashlib.sha256(str(i).encode())
d[n.hexdigest()] = str(i)
with open('/Users/MJ-Mac/Desktop/karname.txt') as f:
file = csv.reader(f)
for row in file :
a = row[0]
b = d[row[1]]
result = (a , b)
with open('/Users/MJ-Mac/Desktop/result3.txt', 'a') as f2:
file2 = csv.writer(f2)
file2.writerow(result)
打開文件然后將所有內容寫入其中可能會更好:
import hashlib
import csv
d = dict()
result = ()
for i in range(0 , 9999) :
n = hashlib.sha256(str(i).encode())
d[n.hexdigest()] = str(i)
with open('/Users/MJ-Mac/Desktop/karname.txt') as f:
file = csv.reader(f)
with open('/Users/MJ-Mac/Desktop/result3.txt', 'w') as f2:
file2 = csv.writer(f2)
for row in file :
a = row[0]
b = d[row[1]]
result = (a , b)
file2.writerow(result)
我不能自己運行這個,因為你的數據不包括在內。
但是,我認為你的問題是with open('/Users/MJ-Mac/Desktop/result3.txt', 'w')
有“w”標志——代表“寫”——所以你的數據是被覆蓋,您可能需要“附加”的“a”標志,以便每一行都將附加到您正在導出的數據中。
import hashlib
import csv
d = dict()
result = ()
for i in range(0 , 9999) :
n = hashlib.sha256(str(i).encode())
d[n.hexdigest()] = str(i)
with open('/Users/MJ-Mac/Desktop/karname.txt') as f:
file = csv.reader(f)
for row in file :
a = row[0]
b = d[row[1]]
result = (a , b)
with open('/Users/MJ-Mac/Desktop/result3.txt', 'a') as f2:
file2 = csv.writer(f2)
file2.writerow(result)
一次打開輸入文件和 output 文件更容易:
with open('/Users/MJ-Mac/Desktop/karname.txt') as f, open('/Users/MJ-Mac/Desktop/result3.txt', 'w') as f2:
output = csv.writer(f2)
for row in csv.reader(f):
output.writerow([row[0], d[row[1]])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.