Python的 - 文件不存在错误(Python - File does not exist err

2019-10-28 08:53发布

我想下面(它是不完整)的脚本在这里做两件事情。 的第一件事就是通过一些子目录循环。 我能做到这一点成功。 第二件事是打开一个特定的文件(这是在每个子目录相同的名称),发现除了第一每一列中的最小值和最大值。

现在,我被困在一列找到最大值,因为我读的文件有,我想忽略两行。 不幸的是,我得到试图运行代码时出现以下错误:

Traceback (most recent call last):
  File "test_script.py", line 22, in <module>
    with open(file) as f:
IOError: [Errno 2] No such file or directory: 'tc.out'

这里是我的代码的当前状态:

import scipy as sp
import os

rootdir = 'mydir'; #mydir has been changed from the actual directory path
data = []

for root, dirs, files in os.walk(rootdir):
    for file in files:
        if file == "tc.out":
            with open(file) as f:
                for line in itertools.islice(f,3,None):
                    for line in file:
                    fields = line.split()
                    rowdata = map(float, fields)
                    data.extend(rowdata)
                    print 'Maximum: ', max(data)

Answer 1:

当你写open(file) ,Python是试图找到该文件tc.out的目录中,你从开始解释。 您应该使用完整路径打开该文件:

with open(os.path.join(root, file)) as f:

让我用一个例子:

我有一个名为目录“somefile.txt”文件/tmp/sto/deep/ (这是一个Unix系统,所以使用正斜杠)。 然后,我必须驻留在目录这个简单的脚本/tmp

oliver@armstrong:/tmp$ cat myscript.py
import os

rootdir = '/tmp'
for root, dirs, files in os.walk(rootdir):
    for fname in files:
        if fname == 'somefile.txt':
            with open(os.path.join(root, fname)) as f:
                print('Filename: %s' % fname)
                print('directory: %s' % root)
                print(f.read())

当我从执行这个脚本/tmp目录,你会看到fname只是文件名,导致它的路径被省略。 这就是为什么你需要从返回的第一个参数来加入吧os.walk

oliver@armstrong:/tmp$ python myscript.py
Filename: somefile.txt
directory: /tmp/sto/deep
contents


Answer 2:

要打开你需要指定完整路径的文件。 您需要更改线路

with open(file) as f:

with open(os.path.join(root, file)) as f:


文章来源: Python - File does not exist error