我正在获取一个不在我正在解析文件的路径中的文件的IO错误

时间:2011-04-26 17:48:56

标签: python file io string-matching

当我打开特定路径中的所有文本和日志文件并打印发现匹配的日志时,我不断收到错误。下面是返回的错误和代码。有谁知道我为什么会收到这个错误;代码按照它应该的方式工作?谢谢!

ERROR:

file: c:\Python27\13.00.log

Traceback (most recent call last):
  File "C:\Python27\allfiles.py", line 20, in <module>
    f=open(file, "r")
IOError: [Errno 2] No such file or directory: 'LICENSE-OpenSSL.txt'

CODE:

import os, sys
import string

userstring = 'Rozelle07'
path = 'c:\\Python27'

for root,dirname, files in os.walk(path): 
    for file in files:
       if file.endswith(".log") or file.endswith(".txt"):
           f=open(file, "r")
           for line in f.readlines():
              if userstring in line:
                 print "file: " + os.path.join(root,file)             
                 break
           f.close()

2 个答案:

答案 0 :(得分:1)

当你打开文件时,变量'file'不包含完整路径,因此你会收到错误。

答案 1 :(得分:1)

我认为您需要使用其绝对路径打开文件,而不仅仅是文件名。尝试将open(..)行更改为f = open(os.path.join(root, file),它应该有效。

编辑:以下适用于我(我也在使用Python 2.7的Windows上):

#!/usr/bin/env python
import os

userstring = 'test'
path = 'c:\\Python27'

for root, dirname, files in os.walk(path): 
    for file in files:
        if file.endswith(".log") or file.endswith(".txt"):
            filepath = os.path.join(root, file)
            with open(filepath, 'r') as f:
                for line in f:
                    if userstring in line:
                        print "%s in %s" % (userstring, filepath)
                        break
                else:
                    print "%s NOT in %s" % (userstring, filepath)