Python抛出明显错误的错误,指出文件不存在

时间:2019-10-08 01:53:35

标签: python pandas

我目前正在尝试以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的文件的名称。另外,我注意到当我实际移入文本文件所在的目录时,程序运行没有问题。

我从根本上做错了什么吗?谢谢。

2 个答案:

答案 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