Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.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 使用os.walk将多个文本文件转换为csv_Python_Csv - Fatal编程技术网

Python 使用os.walk将多个文本文件转换为csv

Python 使用os.walk将多个文本文件转换为csv,python,csv,Python,Csv,我在文件夹/子文件夹中有多个.txt文件,如下所示: 州文件夹 亚利桑那州分店 file1.txt file2.txt file3.txt 阿拉斯加子文件夹 file1.txt file2.txt file3.txt file4.txt 阿肯色州子文件夹 file1.txt file2.txt 我需要将所有文件转换为csv,并将每个文件夹的csv文件(如arizona_files.csv、alaska_files.csv)组合在一起。我尝试使用下面的代码,但没有输出。知道我做错了什么吗 impo

我在文件夹/子文件夹中有多个.txt文件,如下所示:

州文件夹 亚利桑那州分店 file1.txt file2.txt file3.txt 阿拉斯加子文件夹 file1.txt file2.txt file3.txt file4.txt 阿肯色州子文件夹 file1.txt file2.txt 我需要将所有文件转换为csv,并将每个文件夹的csv文件(如arizona_files.csv、alaska_files.csv)组合在一起。我尝试使用下面的代码,但没有输出。知道我做错了什么吗

import os
import csv

for root, dirnames, filenames in os.walk(path):
    for filename in filenames:
        if filename.endswith('.txt'):
            txt_file = ('*.txt')
            csv_file = ('*.csv')
            in_txt = csv.reader(open(filename, "rb"), delimiter = '\t')
            out_csv = csv.writer(open('*.csv', 'wb'))
            out_csv.writerows(filename)

您没有在正确的目录中执行代码。在命令提示符下初始化代码时,您需要将python脚本置于迭代路径的顶层。即,在States文件夹中或其上方,并从该路径启动它。或者,您也可以更改in_文本以执行以下操作:

in_txt = csv.reader(open(os.path.join(path,filename), "rb"), delimiter = '\t')
这将告诉csv.reader当前文件的确切位置。在编写csv时,您还必须添加相同类型的操作

out_csv.writerows(os.path.join(path,filename))

正如os.walk提供的文件名中所述,该文件名不包含path元素,要获得指向dirpath中文件或目录的以top开头的完整路径,请执行os.path.joindirpath,name。这就是为什么会出现此错误。

您看到了哪些错误?您已经尝试了什么?@Logan这是我遇到的错误:IOError:[Errno 2]没有这样的文件或目录:“file2.txt”如果您遇到Errno 2,它就找不到该文件。确保从正确的目录和层次结构进行导航,并确保文件是否存在。与python脚本相关的文件和文件夹在哪里?filename只是文件名,而不是其路径。您需要执行os.path.joinroot,filename来获取文件的路径。而且,代码在很多方面看起来都是错误的。“csv”是一个尴尬的名字。此外,您正在为读取的每个文件覆盖该文件的内容。