我目前正在尝试以Pandas DataFrames的形式读取某些文本文件,该程序不断抛出错误提示该文件不存在。
我写的代码是:
import os
import pandas as pd
cwd = os.getcwd()
path1 = os.path.join(cwd, 'sub1/sub2/sub3')
path2 = os.path.join(cwd, 'sub1/sub2/sub3')
files = []
for f in list(os.listdir(path1)):
files.append(pd.read_csv(f))
运行此代码时,我得到:
FileNotFoundError: [Errno 2] File b'text_file.txt' does not exist: b'text_file.txt'
这非常令人困惑,因为当我运行os.listdir(path1)
时,我会得到所有包含text_file.txt
的文件的名称。另外,我注意到当我实际移入文本文件所在的目录时,程序运行没有问题。
我从根本上做错了什么吗?谢谢。
答案 0 :(得分:2)
您必须加入路径,因为仅 filename 会假定它是相对于您的cwd的。
files = []
for f in list(os.listdir(path1)):
fullpath = os.path.join(path1, f)
files.append(pd.read_csv(fullpath))
已经说过,我建议使用pathlib
,因为它会使文件路径处理更容易一些。 (并且 pandas 支持接受Path
对象)
from pathlib import Path
import pandas as pd
path1 = Path(__file__).parent / 'sub1' / 'sub2' / 'sub3'
files = []
for f in path.glob('*'):
files.append(pd.read_csv(f))
答案 1 :(得分:1)
嗯,这很简单:
1)您可以使用完整路径,例如/Users/mikhailgenkin/code/text_file.txt
。在这种情况下,尝试从哪个位置读取文件都没有关系(只要您从本地计算机运行python脚本即可)。
2)您可以使用相对路径text_file.txt
。在这种情况下,您必须从同一路径运行代码(或运行python源文件)。还有其他可能性,例如,如果您的输入文件相对于源文件是上一层,则应使用../text_file.txt
。