Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python将多个CSV转换为TSV_Python_Python 3.x_Csv_Pathlib - Fatal编程技术网

使用Python将多个CSV转换为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

尝试使用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(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天