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,我只是不确定执行此操作的确切方法。

4

3 回答 3

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())
于 2013-08-13T15:13:53.967 回答
0

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

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

一些附加信息可以在参考中找到:osos.path

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

我强烈推荐python 标准库,以获取有关 python 对新手的全部功能的信息;)

希望有帮助;)

于 2013-08-13T15:22:07.473 回答
0

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

导入全局导入 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
于 2017-05-20T06:56:50.960 回答