Python open() 给出“FileNotFoundError: [Errno 2] No such file or directory:”,但文件存在

时间:2021-06-12 11:26:46

标签: python windows

我正在尝试读取目录中的所有文件并将其中的文本附加到列表中,但在标题中出现错误。但是,该文件确实存在。我的代码是:

pos_lines = []
train_pos_path = r'C:\Users\Halid\Desktop\nlp_p5\nlp_dir2\TRAIN\posTr'
# print(os.listdir(train_pos_path))
for filename in os.listdir(train_pos_path):
    with open(filename, "r",encoding="utf-8", errors='ignore') as f:
        for line in f.readlines():
            pos_lines.append(line)

路径是目录的绝对路径,print(os.listdir(train_pos_path)) 给出了该目录下的文件列表。但是,我无法打开其中的文件,并且出现了我提到的错误。我尝试运行的代码位于 "C:\Users\Halid\Desktop\nlp_p5"。有谁知道我为什么会收到这个错误,我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

您已指定目录的绝对路径 r'C:\Users\Halid\Desktop\nlp_p5\nlp_dir2\TRAIN\posTr'。然后您继续列出所有文件及其文件名,收到 A, B, C, ...

但是,ABC、... 不在您运行 Python 脚本的目录中。 试试打电话

os.chdir(train_pos_path)

在调用 for loop 之前。

另一种解决方案是在每个路径前面加上 train_pos_path

train_pos_path = r'C:\Users\Halid\Desktop\nlp_p5\nlp_dir2\TRAIN\posTr'

for filename in os.listdir(train_pos_path):
    with open(os.path.join(train_pos_path, filename), "r",encoding="utf-8", errors='ignore') as f:
        for line in f.readlines():
            pos_lines.append(line)

从这里得到的关键结论是,os.listdir(directory) 只返回从 directory 看到的名称,而不是它们的绝对路径。