首页 > 解决方案 > FileNotFoundError 即使文件存在

问题描述

尝试使用 wit open .. 打开文件时出现文件不存在的错误。

我正在尝试解析一些 txt 文件,在本地工作时它没有问题,但是当我尝试连接到网络文件夹时问题就开始了。奇怪的是,它确实看到了该文件,但说它没有找到。我指的路径是 '//10.8.4.49/Projects/QASA_BR_TCL_Env_7.2.250/Utils/BR_Env/Call Generator/results/Console_Logs/*' (这个文件夹里全是 txt 文件。

但我仍然收到此错误: FileNotFoundError: [Errno 2] No such file or directory: 'Console_log_01-01-2019_08-17-56.txt'

如您所见,它确实看到了所需的文件。为了得到这个文件,我正在解析以下方式拆分路径:

readFile = name.split("/")[9].split("\\")[1]

因为如果我正在查看我的文件列表,我会通过以下方式查看它们:

['//10.8.4.49/Projects/QASA_BR_TCL_Env_7.2.250/Utils/BR_Env/Call Generator/results/Console_Logs\Console_log_01-01-2019_08-17-56.txt',

分裂后我得到:

Console_log_01-01-2019_08-17-56.txt

它仍然说找不到文件。

def main():
        lines =0
        path = '//10.8.4.49/Projects/QASA_BR_TCL_Env_7.2.250/Utils/BR_Env/Call Generator/results/Console_Logs/*'
        files = glob.glob(path)
        print ("files")
        print ('\n')
        print(files)
        for name in glob.glob(path):
            print (path)
            readFile = name.split("/")[9].split("\\")[1]
            print(readFile)
            with open(readFile,"r") as file:
                lines = file.readlines()
                print (lines)
main()

files
['//10.8.4.49/Projects/QASA_BR_TCL_Env_7.2.250/Utils/BR_Env/Call Generator/results/Console_Logs\\Console_log_01-01-2019_08-17-56.txt', '//10.8.4.49/Projects/QASA_BR_TCL_Env_7.2.250/Utils/BR_Env/Call Generator/results/Console_Logs\\Console_log_01-01-2019_08-18-29.txt']

Traceback (most recent call last):
//10.8.4.49/Projects/QASA_BR_TCL_Env_7.2.250/Utils/BR_Env/Call Generator/results/Console_Logs/*
Console_log_01-01-2019_08-17-56.txt
  File "C:/Users/markp/.PyCharmEdu2018.3/config/scratches/scratch_3.py", line 19, in <module>
    main()
  File "C:/Users/markp/.PyCharmEdu2018.3/config/scratches/scratch_3.py", line 16, in main
    with open(readFile,"r") as file:
FileNotFoundError: [Errno 2] No such file or directory: 'Console_log_01-01-2019_08-17-56.txt'

Process finished with exit code 1

标签: python-3.xreadfile

解决方案


当您查找文件时,您正在整个路径中查找,但是当您打开文件时,您正在引用它,就好像它在本地路径中一样,要么更改当前工作目录

os.chdir(path)

在打开文件之前,或者在 open 语句中使用

open(os.path.join(path,filename))

如果您必须在程序中只打开一个文件,我推荐第一种方法,如果您在多个目录中打开多个文件,我推荐第二种方法。

将来更好地格式化您的问题,堆栈溢出有多种工具,使用它们,您还可以查看文本的外观,请务必在发布前查看它。为您的代码使用代码括号,这将有助于任何试图回答的人。


推荐阅读