[英]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.