gpt4 book ai didi

python - 如何使用作为参数传递的行号拆分csv文件并保存到不同的文件中

转载 作者:行者123 更新时间:2023-12-04 13:32:55 25 4
gpt4 key购买 nike

python script.py 2
这里每个文件将有 2 行。文件名有时间、数据、小时、秒
  • 我在 csv 文件中有 5 行
  • 我将用户的输入作为参数
  • 如果用户给出 2,那么我的每个文件将有 2 行。
  • 前 2 行将在第一个文件中,第二行在第二个文件中,最后一行在第三个文件中
  • 最后一个文件将只有一行
  • 文件名将有小时分秒

  • 下面是csv文件
    1,Network activity,ip-dst,80.179.42.44,,1,20160929
    2,Payload delivery,md5,4ad2924ced722ab65ff978f83a40448e,,1,20160929
    3,Network activity,domain,alkamaihd.net,,1,20160929
    4,Payload delivery,md5,197c018922237828683783654d3c632a,,1,20160929
    5,Network activity,domain,dnsrecordsolver.tk,,1,20160929
    我需要分成 3 个不同的文件,分割的行数必须作为参数
    下面是方法
  • 以分割线为参数,与带时间戳的数据一起保存

  • 下面是使用 date.hour,time 保存数据的代码。我需要一些逻辑来划分线并从那里继续
        import csv
    import time
    import sys

    sourceData = "Oil.csv"
    def GetLineCount():
    with open(sourceData) as f:
    for i, l in enumerate(f):
    pass
    return i

    def MakeLog(startLine, numLines):
    destData = time.strftime("%Y%m%d-%H%M%S.log")
    with open(sourceData, 'r') as csvfile:
    with open(destData, 'w') as dstfile:
    reader = csv.reader(csvfile)
    writer = csv.writer(dstfile)
    next (reader) #skip header




    python 脚本.py 2
    然后将生成 3 个文件,每个文件中有 2 行,最后一个文件将有一个
    预计出
    3 个文本文件将分别生成 2 行

    最佳答案

    以下是您在 Python3 中的操作方法.

    import argparse
    import time
    from itertools import zip_longest


    def grouper(n, iterable, fill_value=None):
    args = [iter(iterable)] * n
    return zip_longest(fillvalue=fill_value, *args)


    def splitter(n_lines, file):
    with open(file) as f:
    for i, payload in enumerate(grouper(n_lines, f, fill_value=''), 1):
    f_name = f"{time.strftime('%Y%m%d-%H%M%S')}_{i*n_lines}.log"
    with open(f_name, 'w') as out:
    out.writelines(payload)


    def get_parser():
    parser = argparse.ArgumentParser(description="File splitter")
    parser.add_argument("file", metavar="FILE", type=str, help="Target file to be chopped up")
    parser.add_argument("n_lines", type=int, default=2, help="Number of lines to output per file")
    return parser


    def command_line_runner():
    parser = get_parser()
    args = vars(parser.parse_args())
    splitter(args['n_lines'], args['file'])


    if __name__ == "__main__":
    command_line_runner()

    sample 运行: python3 main.py sample.csv 2生产 3文件:
    20200921-095943_2.log
    20200921-095943_4.log
    20200921-095943_6.log
    前两个各有两行,最后一个,好吧,一行。 sample.csv的内容就像你的例子一样:
    1,Network activity,ip-dst,80.179.42.44,,1,20160929
    2,Payload delivery,md5,4ad2924ced722ab65ff978f83a40448e,,1,20160929
    3,Network activity,domain,alkamaihd.net,,1,20160929
    4,Payload delivery,md5,197c018922237828683783654d3c632a,,1,20160929
    5,Network activity,domain,dnsrecordsolver.tk,,1,20160929

    关于python - 如何使用作为参数传递的行号拆分csv文件并保存到不同的文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63987921/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com