如何使用python从两个csv文件中获取值并将其放入单个csv文件中?
我想从两个csv文件中获取值,并将其放入一个csv文件中 请参考这两个csv文件中的数据: CSV 1:如何使用python从两个csv文件中获取值并将其放入单个csv文件中?,python,csv,Python,Csv,我想从两个csv文件中获取值,并将其放入一个csv文件中 请参考这两个csv文件中的数据: CSV 1: | | Status | P | F | B | IP | NI | NA | CO | U | |---|----------|----|---|---|----|----|----|----|---| | 0 | Sanity 1 | 14 | | | | | | 1 | | | 1 | Sanity 2 | 13 | | 1 | |
| | Status | P | F | B | IP | NI | NA | CO | U |
|---|----------|----|---|---|----|----|----|----|---|
| 0 | Sanity 1 | 14 | | | | | | 1 | |
| 1 | Sanity 2 | 13 | | 1 | | | | 1 | |
| | | | | | | | | | |
| | Status | P | F | B | IP | NI | NA | CO | U |
|---|------------|-----|---|---|----|----|----|----|---|
| 0 | P0 Dry Run | 154 | 1 | | | 1 | | | 5 |
| | | | | | | | | | |
| | | | | | | | | | |
CSV 2:
| | Status | P | F | B | IP | NI | NA | CO | U |
|---|----------|----|---|---|----|----|----|----|---|
| 0 | Sanity 1 | 14 | | | | | | 1 | |
| 1 | Sanity 2 | 13 | | 1 | | | | 1 | |
| | | | | | | | | | |
| | Status | P | F | B | IP | NI | NA | CO | U |
|---|------------|-----|---|---|----|----|----|----|---|
| 0 | P0 Dry Run | 154 | 1 | | | 1 | | | 5 |
| | | | | | | | | | |
| | | | | | | | | | |
代码:
我尝试了以下代码:
filenames = glob.glob ("C:\\Users\\gomathis\\Downloads\\To csv\\*.csv")
wf = csv.writer(open("C:\\Users\\gomathis\\Downloads\\To
csv\\FinalTR.csv",'wb'))
for f in filenames:
rd = csv.writer(open(f,'r'))
next(rd)
for row in rd:
wf.writerow(row)
实际结果:
在尝试上面的代码时,我没有从上面的CSV文件中获取值
预期结果:
我需要两个文件需要添加到一个单一的csv文件,并保存在本地
修改代码:
filenames=glob.glob(“C:\\Users\\gomathis\\Downloads\\To csv\\*.csv”)
wf=csv.writer(打开(“C:\\Users\\gomathis\\Downloads\\To csv\\FinalTR.csv”,'w'))
打印(文件名)
对于文件名中的f:
rd = csv.reader(open(f,'r', newline=''))
next(rd)
for row in rd:
wf.writerow(row)
最新结果:
在修改代码后,我得到了以下结果。我没有得到状态P、F、B等索引。请参考最新结果
|0 | P0干运行-18年2月15日| 154 | 1 | | 1 | | 5|
|---|--------------------------------|-----|---|---|---|---|---|---|---|
| | | | | | | | | | |
|0 | FRA产品的健全性-18年2月15日| 14 | | | | | | 1 ||
| | | | | | | | | | |
|1 | SYD Gamma中的精神卫生-15/02/18 | 13 | | 1 | | | 1 ||
您需要在循环中的csv文件上调用csv读取器方法
rd = csv.reader(open(f,'r'))
注:
- 将
与自动关闭文件的语句放在一起李>open()
- 从文件模式中删除了二进制标志,并添加了
,这是在Python 3中传递到newline='
和csv.reader
的文件所需的csv.writer
- 对于您正在读取的文件,已从
更改为csv.writer
csv.reader
- 添加了一个
标志,以允许从第一个文件复制头,并跳过从之后的任何文件复制头李>copy_headers
- 检查源文件名,当它与目标文件名匹配时跳过它
open(f,'rb')
。如果Python 3,打开(f,'r',换行=“”)
。写作遵循同样的模式。对csv文件进行这种特殊处理的原因是csv模块需要绕过Python的通用换行符支持。您确定您的glob与您的文件名匹配吗?在循环之前检查打印文件名。@StevenRumbalski对延迟响应表示抱歉。我在打印时得到了这个结果,然后将其传递到循环['C:\\Users\\gomathis\\Downloads\\To csv\\FinalTR.csv','C:\\Users\\gomathis\\Downloads\\To csv\\file1.csv','C:\\Users\\gomathis\\Downloads\\To csv\\file2.csv'.
您使用的是Python 2还是Python 3?在FinalTR.csv
中会出现什么结果?任何东西正如@Ank所指出的,当您应该使用rd=csv.writer(open(f,'r'))
时,您应该使用rd=csv.reader(open(f,'r'))
。你需要一个csv.reader
而不是csv.writer
。此外,由于目标文件存在于该列表中,您应该跳过读取它<代码>如果f.endswith('FinalTR.csv'):继续谢谢。但我有另一个澄清,如果我想从包含3个以上csv文件的文件夹中只选择两个csv文件,该怎么办。@gomathisubramanian:这两个名称有什么特别之处?你是如何手动知道差异的?第1周和第2周,这些是我有数据的文件,可以作为一个单独的file@gomathisubramanian:您可以将glob()
参数的结尾从'*.csv'
更改为'week\[1-2].csv'
。或“第1周至第9周”
。使用特定的glob,如果src_fname.endswith('FinalTR.csv'):继续,您可以删除行,谢谢兄弟。这是有用的。