Python - 文件不存在错误

Python - File does not exist error

我正在尝试使用下面的脚本在这里做一些事情(它不完整)。首先是循环遍历一些子目录。我能够成功地做到这一点。第二件事是打开一个特定的文件(它在每个子目录中都是相同的名称)并在除第一列之外的每一列中找到最小值和最大值。

现在我一直在寻找单个列中的最大值,因为我正在读取的文件有两行我想忽略。不幸的是,我在尝试 运行 代码时遇到以下错误:

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)

要打开文件,您需要指定完整路径。您需要更改行

with open(file) as f:

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

当你写 open(file) 时,Python 试图在你启动解释器的目录中找到文件 tc.out。您应该在 open:

中使用该文件的完整路径
with open(os.path.join(root, file)) as f:

举个例子:

我在目录/tmp/sto/deep/中有一个名为'somefile.txt'的文件(这是一个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