首页 > 解决方案 > 将除第一行之外的所有内容复制到新的csv文件python中

问题描述

我每天生成几个 csv 文件,我正在尝试编写一个 python 脚本,它将一个一个地打开每个 csv 文件,将 csv 重写到一个新位置并填写文件名中的任务信息。

我已经能够将可以完成大部分工作的单独的 python 脚本拼凑在一起,但我正在碰壁。

每个 CSV 都有一个标准文件名:“Number_Name_Location.csv”

第 1 行有一个标题,用于标记每一列、名称、位置、日期等,并且每个 .csv 可以有 n 个预先填充的行。

我试图自动化的是以下步骤:

  1. 打开“/ToParse”文件夹中的第一个 .csv
  2. 填写从文件名本身收集的所有行的其余详细信息。
    • A栏:数字
    • B 列:解析日期
    • k栏:名称
    • L 列:位置
  3. 在文件夹“/Parsed”中写入一个新的 csv w
  4. 继续解析下一个 .csv,直到“/ToParse”文件夹中没有 .csv
  5. 将所有原始解析文件移动到 /Parsed/Original

下面是拼凑在一起的代码,它覆盖了标题行,我如何调整代码以忽略它打开的 csv 中的第一行,然后从第 1 行开始复制

import glob
import csv
from datetime import date

with open('Parsed/output.csv', 'w', newline='') as f_output:
csv_output = csv.writer(f_output)

    for filename in glob.glob('*.csv'):
        with open(filename, newline='') as f_input:
            csv_input = csv.reader(f_input)
            filename_parts = filename.split("_")
            #print(filename_parts[0]) 

            for row in csv_input:
                row[0] = filename_parts[0]
                row[1] = date.today()
                row[10] = filename_parts[1]
                row[11] = filename_parts[2]
                csv_output.writerow(row)

标签: pythoncsv

解决方案


open(filename, newline='')对我来说似乎很奇怪。你确定要newline=''吗?

f_input.readline()您可以通过在 for 循环之前手动执行来跳过第一行。这将读取(=跳过)第一行,for循环将从下一行开始。

或者你可以这样做for row in csv_input[1:],但我不确定它是否有效并且现在无法测试它。([1:]意味着跳过任何类似列表的变量中的第一项(正式称为:)Iterable


推荐阅读