首页 文章

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

提问于
浏览
1

我正在尝试自动化一个过程,在特定文件夹中,有多个文本文件遵循相同的数据格式/结构 . 在文本文件中,数据用逗号分隔 . 我希望能够将所有这些文本文件输出到一个累积的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

    只需对代码进行一些重新排序即可 .

    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

    您也可以尝试不同的方式:

    我曾经使用过os.listdir() . 这将为您提供目录中所有文件的列表 . 与os.path.join结合使用,您可以管理某个目录中的所有* .csv文件 .

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

    所以我只是循环遍历目录中的所有文件(搜索它们以“.csv”结尾),对于每个文件,将每行作为字符串存储在列表中,用字符串分隔符分隔字符串,make“, “ 至 ” . ”在左侧字符串中并再次连接字符串 . 然后将列表的每一行推送到您要使用的输出文件

    我强烈推荐python standard library获取有关python到新手的总功能的信息;)

    希望有所帮助;)

  • 0

    我修改了上面的代码,将文本文件转换为csv并获取工作代码,将文件夹中的所有csv文件转换为附加所有csv文件的一个文本文件 . 效果很好 .

    import 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
    

相关问题