一个关于同时读取两个CSV文件并输出的有趣案例
代码如下所示:
import csv
with open('tets.csv', 'r') as f:
with open('test.csv', 'r') as file:
FileOneReader = csv.DictReader(f)
for item, row in enumerate(FileOneReader):
FileTwoReader = csv.DictReader(file)
for item2, row2 in enumerate(FileTwoReader):
print(item, row)
print(item2, row2)
test.csv
id | name | age | gender |
---|---|---|---|
1 | Roberta | 39 | M |
2 | Oliver | 25 | M |
3 | Shayna | 18 | F |
4 | Fechin | 18 | M |
tets.csv
id | name | age | gender |
---|---|---|---|
1 | Roberta | 39 | M |
2 | Oliver | 25 | M |
3 | Shayna | 18 | F |
4 | Fechin | 18 | M |
结果:
0 {'id': '1', 'name': 'Roberta', 'age': '39', 'gender': 'M'}
0 {'id': '1', 'name': 'Roberta', 'age': '39', 'gender': 'M'}
0 {'id': '1', 'name': 'Roberta', 'age': '39', 'gender': 'M'}
1 {'id': '2', 'name': 'Oliver', 'age': '25', 'gender': 'M'}
0 {'id': '1', 'name': 'Roberta', 'age': '39', 'gender': 'M'}
2 {'id': '3', 'name': 'Shayna', 'age': '18', 'gender': 'F'}
0 {'id': '1', 'name': 'Roberta', 'age': '39', 'gender': 'M'}
3 {'id': '4', 'name': 'Fechin', 'age': '18', 'gender': 'M'}
这个情况是由于内循环for item2, row2 in enumerate(FileTwoReader):中的enumerate(FileTwoReader)其实是一个迭代器,在第一次外循环完成过后,内循环中的迭代器已经完全取出数据,所以之后的循环中enumerate(FileTwoReader)都一直处于空的状态就不再执行。
这时可以将第二个打开文件放到第一次循环体内,如下代码所示:
import csv
with open('tets.csv', 'r') as f:
FileOneReader = csv.DictReader(f)
for item, row in enumerate(FileOneReader):
with open('test.csv', 'r') as file:
FileTwoReader = csv.DictReader(file)
for item2, row2 in enumerate(FileTwoReader):
print(item, row)
print(item2, row2)
结果为:
0 {'id': '1', 'name': 'Roberta', 'age': '39', 'gender': 'M'}
0 {'id': '1', 'name': 'Roberta', 'age': '39', 'gender': 'M'}
0 {'id': '1', 'name': 'Roberta', 'age': '39', 'gender': 'M'}
1 {'id': '2', 'name': 'Oliver', 'age': '25', 'gender': 'M'}
0 {'id': '1', 'name': 'Roberta', 'age': '39', 'gender': 'M'}
2 {'id': '3', 'name': 'Shayna', 'age': '18', 'gender': 'F'}
0 {'id': '1', 'name': 'Roberta', 'age': '39', 'gender': 'M'}
3 {'id': '4', 'name': 'Fechin', 'age': '18', 'gender': 'M'}
1 {'id': '2', 'name': 'Oliver', 'age': '25', 'gender': 'M'}
0 {'id': '1', 'name': 'Roberta', 'age': '39', 'gender': 'M'}
1 {'id': '2', 'name': 'Oliver', 'age': '25', 'gender': 'M'}
1 {'id': '2', 'name': 'Oliver', 'age': '25', 'gender': 'M'}
1 {'id': '2', 'name': 'Oliver', 'age': '25', 'gender': 'M'}
2 {'id': '3', 'name': 'Shayna', 'age': '18', 'gender': 'F'}
1 {'id': '2', 'name': 'Oliver', 'age': '25', 'gender': 'M'}
3 {'id': '4', 'name': 'Fechin', 'age': '18', 'gender': 'M'}
2 {'id': '3', 'name': 'Shayna', 'age': '18', 'gender': 'F'}
0 {'id': '1', 'name': 'Roberta', 'age': '39', 'gender': 'M'}
2 {'id': '3', 'name': 'Shayna', 'age': '18', 'gender': 'F'}
1 {'id': '2', 'name': 'Oliver', 'age': '25', 'gender': 'M'}
2 {'id': '3', 'name': 'Shayna', 'age': '18', 'gender': 'F'}
2 {'id': '3', 'name': 'Shayna', 'age': '18', 'gender': 'F'}
2 {'id': '3', 'name': 'Shayna', 'age': '18', 'gender': 'F'}
3 {'id': '4', 'name': 'Fechin', 'age': '18', 'gender': 'M'}
3 {'id': '4', 'name': 'Fechin', 'age': '18', 'gender': 'M'}
0 {'id': '1', 'name': 'Roberta', 'age': '39', 'gender': 'M'}
3 {'id': '4', 'name': 'Fechin', 'age': '18', 'gender': 'M'}
1 {'id': '2', 'name': 'Oliver', 'age': '25', 'gender': 'M'}
3 {'id': '4', 'name': 'Fechin', 'age': '18', 'gender': 'M'}
2 {'id': '3', 'name': 'Shayna', 'age': '18', 'gender': 'F'}
3 {'id': '4', 'name': 'Fechin', 'age': '18', 'gender': 'M'}
3 {'id': '4', 'name': 'Fechin', 'age': '18', 'gender': 'M'}