python - 将除第一行之外的所有内容复制到新的csv文件python中
问题描述
我每天生成几个 csv 文件,我正在尝试编写一个 python 脚本,它将一个一个地打开每个 csv 文件,将 csv 重写到一个新位置并填写文件名中的任务信息。
我已经能够将可以完成大部分工作的单独的 python 脚本拼凑在一起,但我正在碰壁。
每个 CSV 都有一个标准文件名:“Number_Name_Location.csv”
第 1 行有一个标题,用于标记每一列、名称、位置、日期等,并且每个 .csv 可以有 n 个预先填充的行。
我试图自动化的是以下步骤:
- 打开“/ToParse”文件夹中的第一个 .csv
- 填写从文件名本身收集的所有行的其余详细信息。
- A栏:数字
- B 列:解析日期
- k栏:名称
- L 列:位置
- 在文件夹“/Parsed”中写入一个新的 csv w
- 继续解析下一个 .csv,直到“/ToParse”文件夹中没有 .csv
- 将所有原始解析文件移动到 /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)
解决方案
这open(filename, newline='')
对我来说似乎很奇怪。你确定要newline=''
吗?
f_input.readline()
您可以通过在 for 循环之前手动执行来跳过第一行。这将读取(=跳过)第一行,for循环将从下一行开始。
或者你可以这样做for row in csv_input[1:]
,但我不确定它是否有效并且现在无法测试它。([1:]
意味着跳过任何类似列表的变量中的第一项(正式称为:)Iterable
)
推荐阅读
- python - Python函数没有传入,openCV
- certificate - c#:如何使用 CERTENROLLLib.CX509PrivateKey 创建密钥大小为 168 的证书?
- windows - 无法推送到 Windows Server 2016 上的 git 存储库
- android - 添加时获取 java.lang.NullPointerException
我资源的要素 - python - 将重复的行保存在单独的数据框中
- java - 使用流和 lambda 美化 for 循环
- python - 在 Spyder 中更改 python 版本
- watson-discovery - 将先前注释的文档导入 IBM Knowledge Studio
- xamarin - 无法使用 MsBuild 构建新创建的 Xamarin 跨平台项目
- c# - 如何确定是什么导致了 Newtonsoft.Json.Serialization.JsonProperty 的内存分配