是否可以将存储在列表中的字符串写入。csv文件到一个单元格中?
我有一个文件夹,里面有文件,我想把文件名写入一个csv文件。
文件夹:
Data.txt
Data2.txt
Data3.txt
下面是我的代码:
import csv
import os
index = -1
filename = []
filelist = []
filelist = os.listdir("dirname")
f = csv.writer(open("output.csv", "ab"), delimiter=",", quotechar=" ", quoting=csv.QUOTE_MINIMAL)
for file in filelist:
if (len(filelist) + index) <0:
break
filename = filelist[len(filelist)+index]
index -= 1
f.writerow(filename)
我得到的输出是。csv文件中的每个单元格一个字母:
A B C D E F G H I
1 D a t a . t x t
2 D a t a 2 . t x t
3 D a t a 3 . t x t
期望的输出将在一个单元格中。csv文件应该有三行,单元格A1中有字符串"Data.txt",单元格B1中有字符串"Data2.txt",单元格C1中有字符串"Data3.txt":
A B
1 Data.txt
2 Data2.txt
3 Data3.txt
这是可能的吗?如果你需要更多的信息,请告诉我。我目前在Windows 7上使用Python 2.7。
解决方案/纠正代码:
import csv
import os
index = -1
filename = []
filelist = []
filelist = os.listdir("dirname")
f = csv.writer(open("output.csv", "ab"), delimiter=",", quotechar=" ", quoting=csv.QUOTE_MINIMAL)
for file in filelist:
if (len(filelist) + index) <0:
break
filename = filelist[len(filelist)+index]
index -= 1
f.writerow([filename]) #Need to send in a list of strings without the ',' as a delimiter since writerow expects a tuple/list of strings.
你可以这样做:
import csv
import os
filelist = os.listdir("dirname") # Use a real directory
f = csv.writer(open("output.csv", 'ab'), delimiter=",", quotechar=" ", quoting=csv.QUOTE_MINIMAL)
for file_name in filelist:
f.writerow([file_name])
Writerow需要一个序列,例如字符串列表。你给它一个字符串,然后它遍历它,导致你看到字符串的每个字母之间都有一个,
您也可以将每个句子/值放在一个列表中的一个单元格中,并将所有内部列表放在一个外部列表中。
像这样:
import csv
import os
list_ = [["value1"], ["value2"], ["value3"]]
with open('test.csv', 'w', newline='') as f:
writer = csv.writer(f)
writer.writerows(list_)