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()
时,它需要所有路径。是的,正确。阅读时,你需要提供完整的路径。我的错。更新答案哦,我明白了。完整的路径是关键。你真的帮了我大忙,非常感谢!