我正在尝试自动化一个进程,在特定文件夹中,有多个文本文件遵循相同的数据格式/结构。在文本文件中,数据以逗号分隔。我希望能够将所有这些文本文件输出到一个累积的csv文件中。这就是我现在所拥有的,并且由于缺乏python知识而似乎陷入了困境。
from collections import defaultdict
import glob
def get_site_files():
sites = defaultdict(list)
for fname in glob.glob('*.txt'):
csv_out = csv.writer(open('out.csv', 'w'), delimiter=',')
f = open('myfile.txt')
for line in f:
vals = line.split(',')
csv_out.writerow()
f.close()
编辑:提出评论:我想确保读取所有文本文件,而不仅仅是myfile.txt。
另外,如果我可以将它们全部合并到一个大的.txt文件中然后我可以将它们变成一个非常棒的csv,我只是不确定这样做的确切方法。
答案 0 :(得分:1)
只需对代码进行重新排序即可。
import csv
import glob
def get_site_files():
with open('out.csv', 'w') as out_file:
csv_out = csv.writer(out_file, delimiter=',')
for fname in glob.glob('*.txt'):
with open(fname) as f:
for line in f:
vals = line.split(',')
csv_out.writerow(vals)
get_site_files()
但是因为它们都是相同的格式,你可以将它们连接起来:
import glob
with ('out.csv', 'w') as fout:
for fname in glob.glob('*.txt'):
with open(fname, 'r') as fin:
fout.write(fin.read())
答案 1 :(得分:0)
你也可以尝试不同的方式:
我曾经使用过os.listdir()。这将为您提供目录中所有文件的列表。与os.path.join结合使用,您可以管理某个目录中的所有* .csv文件。
所以我只是循环遍历目录中的所有文件(搜索它们以“.csv”结尾),对于每个文件,将每一行作为字符串存储在列表中,用字符串分隔符分隔字符串,使“,”变为“。”在左侧字符串中并再次连接字符串。然后将列表的每一行推送到您要使用的输出文件
我强烈推荐python standard library获取有关python到新手的总功能的信息;)
希望有所帮助;)
答案 2 :(得分:0)
我修改了上面的代码,将文本文件转换为csv并获取工作代码,将文件夹中的所有csv文件转换为附加所有csv文件的一个文本文件。效果很好。
导入glob import csv
def get_site_files():
with open('out.txt', 'w') as out_file:
csv_out = csv.writer(out_file, delimiter=',')
for fname in glob.glob('*.csv'):
with open(fname) as f:
for line in f:
vals = line.split(',')
csv_out.writerow(vals)enter code here