使用Python将多个CSV转换为TSV
尝试使用python将多(5)个CSV转换为TSV,但当我运行此命令时,它只创建1个TSV。有人能帮忙吗使用Python将多个CSV转换为TSV,python,python-3.x,csv,pathlib,Python,Python 3.x,Csv,Pathlib,尝试使用python将多(5)个CSV转换为TSV,但当我运行此命令时,它只创建1个TSV。有人能帮忙吗 import csv import sys import os import pathlib print ("Exercise1.csv"), sys.argv[0] dirname = pathlib.Path('/Users/Amber/Documents') for file in pathlib.Path().rglob('*.csv'): with open(fil
import csv
import sys
import os
import pathlib
print ("Exercise1.csv"), sys.argv[0]
dirname = pathlib.Path('/Users/Amber/Documents')
for file in pathlib.Path().rglob('*.csv'):
with open(file,'r') as csvin, open('Exercise1.tsv', 'w') as tsvout:
csvin = csv.reader(csvin)
tsvout = csv.writer(tsvout, delimiter='\t')
for row in csvin:
print(row)
tsvout.writerow(row)
exit ()
谢谢 使用for循环打开.csv文件夹中的每个文件,但只打开一个要写入的文件(Exercise1.tsv)。所以每次都覆盖同一个文件。您需要在循环的每次迭代中创建新文件以写入。您可以尝试以下方法:
for i,file in enumerate(pathlib.Path().rglob('*.csv')):
with open(file,'r') as csvin, open('Exercise_{}.tsv'.format(i), 'w') as tsvout:
csvin = csv.reader(csvin)
tsvout = csv.writer(tsvout, delimiter='\t')
enumerate()将计数器添加到for循环。这将在Exercise.tsv文件中添加一个数字,从0到目录中文件的长度。请查看
with
语句中的第二个open
。。。它总是使用相同的名称。此外,在第一次迭代结束时调用exit()
。@mkrieger1:如果我向左移动exit()
一个缩进,它将开始运行无限循环。知道为什么会发生这种情况吗?如果在pathlib.Path()中的for file()循环的每次迭代中打印file
变量,看看发生了什么事?@mkrieger1:我会通过在for i,file in pathlib.Path()下添加print(i,file)
一行来实现吗?对不起,也许是一个基本的问题,我对这个很陌生!谢谢你的帮助!我试过了,它确实创建了一个名为“Exercise_0”的新TSV,而不是Exercise1,但仍然只创建了一个TSV文件……当我尝试将exit()
语句移到左侧时,它开始创建大量TSV(比我在该目录中的CSV文件多得多)……你知道为什么会发生这种情况吗@第85天