【问题标题】:How to create multiple delimited files in python?如何在python中创建多个分隔文件?
【发布时间】:2020-12-07 04:15:16
【问题描述】:

我有一个程序可以将 CSV 文件转换为管道分隔文件,并计算总行数。 但在这种情况下,如果总行数超过 7000,我想创建一个新的输出文件。 这种情况是只调整一个文件中的 7000 行,并为每隔 7000 行创建一个输出文件。

任何建议、想法或修改都将受到高度赞赏。

转换为单个文件的先前代码:

import csv
input_file = input("Enter input file")
output_file = input("Enter Output file")

# count number of lines
def total_lines(input_file):
    with open(input_file) as f:
        return sum(1 for line in f)

# convert input files to output
def file_conversion(input_file, output_file):
    with open(input_file) as fin:
        with open(output_file, 'w', newline='') as fout:
            reader = csv.DictReader(fin, delimiter=',')
            writer = csv.DictWriter(fout, reader.fieldnames, delimiter='|')
            writer.writeheader()
            writer.writerows(reader)
            print("Successfully converted into", output_file)

【问题讨论】:

    标签: python python-3.x csv delimiter file-handling


    【解决方案1】:

    more-itertools 让这一切变得简单。

    from more_itertools import chunked
    
    def file_conversion(input_file, output_file_pattern, chunksize):
        with open(input_file) as fin:
            reader = csv.DictReader(fin, delimiter=',')
            for i, chunk in enumerate(chunked(reader, chunksize)):
                with open(output_file_pattern.format(i), 'w', newline='') as fout:
                    writer = csv.DictWriter(fout, reader.fieldnames, delimiter='|')
                    writer.writeheader()
                    writer.writerows(chunk)
                    print("Successfully converted into", output_file)
    

    示例用法:

    file_conversion('in.csv', 'out{:03}.csv', 7000)
    

    这将生成文件out000.csvout001.csv 等。

    【讨论】:

    • 我想改进这个,我想改变我的标题。我尝试使用 writer = csv.DictWriter(fout, fieldnames=new_headers,extrasaction='ignore', delimiter='|'),它只更改标题但不显示输出文件中的数据
    • @Atom Store 这是一个与此无关的不同问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-18
    • 2013-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-24
    相关资源
    最近更新 更多