Python在文件夹及其子文件夹上循环以读取CSV时会获得文件名,但在读取CSV时会返回未找到的文件
在将CSV文件转换为JSON之前,我尝试循环访问文件夹和子文件夹以访问和读取CSV文件。以下是我正在编写的代码:Python在文件夹及其子文件夹上循环以读取CSV时会获得文件名,但在读取CSV时会返回未找到的文件,python,pandas,Python,Pandas,在将CSV文件转换为JSON之前,我尝试循环访问文件夹和子文件夹以访问和读取CSV文件。以下是我正在编写的代码: cursor = conn.cursor() try: # Specify the folder containing needed files folderPath = 'C:\\Users\\myUser\\Desktop\\toUpload' # Or using input() fwdPath = 'C:/Users/myUser/Desktop/to
cursor = conn.cursor()
try:
# Specify the folder containing needed files
folderPath = 'C:\\Users\\myUser\\Desktop\\toUpload' # Or using input()
fwdPath = 'C:/Users/myUser/Desktop/toUpload'
for countries in os.listdir(folderPath):
for sectors in os.listdir(folderPath+'\\'+countries):
for file in os.listdir(folderPath+'\\'+countries+'\\'+sectors):
data = pd.DataFrame()
filename, _ext = os.path.splitext(os.path.basename(folderPath+'\\'+countries+'\\'+file))
print(file + ' ' + filename+ ' ' + sectors + ' ' + countries)
data = pd.read_csv(file)
# cursor.execute('SELECT * FROM SECTORS')
# print(list(cursor))
finally:
cursor.close()
conn.close()
以下打印行返回文件名不带扩展名的文件,然后返回扇区和国家/地区文件夹名称:
print(file + ' ' + filename+ ' ' + sectors + ' ' + countries)
myfile.csv myfile WASHSector CTRYIrq
现在,在读取CSV时,需要花费大量的时间,最后会出现以下错误:
[Errno 2]文件myfile.csv不存在
您需要提供文件的完整路径,因此将其更改为:
data = pd.read_csv(folderPath+'\\'+countries+'\\'+sectors + '\\' +file)
您需要提供文件的完整路径,因此将其更改为:
data = pd.read_csv(folderPath+'\\'+countries+'\\'+sectors + '\\' +file)
在读取csv文件之前,您应该编写文件的整个路径,否则熊猫将无法读取该文件
导入操作系统
# ...
path=os.path.join(folderPath、国家、部门、文件)
数据=pd.read\U csv(路径)
另外,我建议您使用os.walk
方法,而不是使用三个嵌套for循环。它将在目录中自动递归
>>folderPath='C:\\Users\\myUser\\Desktop\\toUpload'
>>>对于os.walk(folderPath)中的根目录文件:
>>> ... 对于文件中的f:
>>> ... pd.read_csv(os.path.join(root,f))
在读取csv文件之前,您应该编写文件的整个路径,否则熊猫将无法读取该文件
导入操作系统
# ...
path=os.path.join(folderPath、国家、部门、文件)
数据=pd.read\U csv(路径)
另外,我建议您使用os.walk
方法,而不是使用三个嵌套for循环。它将在目录中自动递归
>>folderPath='C:\\Users\\myUser\\Desktop\\toUpload'
>>>对于os.walk(folderPath)中的根目录文件:
>>> ... 对于文件中的f:
>>> ... pd.read_csv(os.path.join(root,f))
很抱歉,这是一个名为ai
的本地目录。我现在编辑答案我这样做的主要原因是因为我需要每个子文件夹的名称,以便以后添加到文件中,因此我需要知道该文件位于IRQ文件夹中,并清洗子文件夹以将其添加到数据库中。Canos.walk()
也可以对此提供帮助。在根变量中有subdir名称。这只是一个提高性能的建议,如果您对使用它感到不舒服,请不要使用它:)我对提高性能感兴趣,因为将有成百上千的文件夹需要处理。很抱歉,这是一个名为ai
的本地目录。我现在编辑答案我这样做的主要原因是因为我需要每个子文件夹的名称,以便以后添加到文件中,因此我需要知道该文件位于IRQ文件夹中,并清洗子文件夹以将其添加到数据库中。Canos.walk()
也可以对此提供帮助。在根变量中有subdir名称。这只是一个提高性能的建议,如果您对使用它感到不舒服,请不要使用它:)我对提高性能感兴趣,因为将有成百上千的文件夹需要处理。