Python 设置输出目录时引发错误

Python 设置输出目录时引发错误,python,pandas,Python,Pandas,当我试图设置输出目录并在“I”前面写入前缀时,例如'cal\'或'edit\',会出现错误。如果我将后缀像df.添加到_csv(I+''u edit.csv'),结果是“filename.csv\u edit”。 所以文件被保存到输入目录中,我无法添加任何前缀和后缀。如何修复此错误 import pandas as pd import glob PathIn = r'C:\Users\input' PathOut = r'C:\Users\output' filenames = glo

当我试图设置输出目录并在
“I”
前面写入前缀时,例如
'cal\'
'edit\'
,会出现错误。如果我将后缀像
df.添加到_csv(I+''u edit.csv')
,结果是
“filename.csv\u edit”
。 所以文件被保存到输入目录中,我无法添加任何前缀和后缀。如何修复此错误

import pandas as pd
import glob    

PathIn = r'C:\Users\input'
PathOut = r'C:\Users\output'
filenames = glob.glob(PathIn + "/*.csv")

file_list = []
for i in filenames:
    df = pd.read_csv(i)
    file_list.append(df)

    df.columns = df.columns.str.replace('[','')
    df.columns = df.columns.str.replace(']','')

    df.to_csv(i + '.csv')

文件名中的
i
值是您正在读取的csv文件的绝对路径

因此,如果输入目录中有3个csv文件,则文件名列表如下所示:

['C:\Users\input\file1.csv',
'C:\Users\input\file2.csv',
“C:\Users\input\file3.csv']

现在,您正试图在上述列表的元素前面添加一个前缀,该前缀将不是有效的
路径

您需要获取输入文件的文件名,并使用
PathOut
将其追加,以便存在有效路径

您可以在任何目录中获取文件名,如下所示:

filenames = []
for entry in os.listdir(PathIn):
    if os.path.isfile(os.path.join(PathIn, entry)) and ".csv" in entry:
        filenames.append(entry)

现在,您可以迭代此列表并执行您正在执行的操作。要将最终的
df
保存到输出目录中的文件,请使用
PathOut

附加文件名,然后尝试此选项。这应该行得通。它有你想要的完整代码

import os
import pandas as pd

PathIn = r'C:\Users\input'
PathOut = r'C:\Users\output'

file_list = []
for name in os.listdir(PathIn):
    if name.endswith(".csv"):
        #print(name)
        df = pd.read_csv(PathIn + "\" + name)
        file_list.append(df)

        df.columns = df.columns.str.replace('[','')
        df.columns = df.columns.str.replace(']','')

        df.to_csv(PathOut + name)


我已经编辑了我的答案,包括在目录中获取文件名。看一看。此外,您还可以找到许多其他不同的方法来列出目录中的文件。不幸的是,存在与FileNotFoundError相同的错误:[Errno 2]文件(文件名.csv)不存在。当我运行
print(df)
测试
df=pd.read\u csv(name)
时。我认为当我们使用
pd.read\u csv()
时,它需要所有路径。是的,正确。阅读时,你需要提供完整的路径。我的错。更新答案哦,我明白了。完整的路径是关键。你真的帮了我大忙,非常感谢!