Python将文本数据文件自动化为csv

时间:2013-08-13 14:56:49

标签: python automation

我正在尝试自动化一个进程,在特定文件夹中,有多个文本文件遵循相同的数据格式/结构。在文本文件中,数据以逗号分隔。我希望能够将所有这些文本文件输出到一个累积的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,我只是不确定这样做的确切方法。

3 个答案:

答案 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文件。

参考资料中可以找到一些其他信息:osos.path

所以我只是循环遍历目录中的所有文件(搜索它们以“.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