首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python错误os.walk IOError

Python错误os.walk IOError
EN

Stack Overflow用户
提问于 2014-06-30 14:58:31
回答 2查看 605关注 0票数 1

我试图跟踪文件名中有服务器的文件,并且我可以用server**打印目录中的所有文件,但是当我试图读取该文件时,它会给我带来错误“:

代码语言:javascript
复制
Traceback (most recent call last):
  File "view_log_packetloss.sh", line 27, in <module>
    with open(filename,'rb') as files:
IOError: [Errno 2] No such file or directory: 'pcoip_server_2014_05_19_00000560.txt'

我已经看到了类似的问题,但我无法修复我的问题,使用chdir将当前目录更改为文件目录时,修复了一些错误。任何帮助都是非常感谢的。谢谢

代码语言:javascript
复制
#!usr/bin/env/ python
import sys, re, os

#fucntion to find the packetloss data in pcoip server files
def function_pcoip_packetloss(filename):
        lineContains = re.compile('.*Loss=.*')  #look for "Loss=" in the file
        for line in filename:
                if lineContains.match(line):    #check if line matches "Loss="
                        print 'The file has: '  #prints if "Loss=" is found
                        print line
                        return 0;

for root, dirs, files in os.walk("/users/home10/tshrestha/brb-view/logs/vdm-sdct-agent/pcoip-logs"):
        lineContainsServerFile = re.compile('.*server.*')
        for filename in files:
                if lineContainsServerFile.match(filename):
                        with open(filename,'rb') as files:
                                print 'filename'
                                function_pcoip_packetloss(filename);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-30 15:09:55

这些文件是根目录中文件对象的名称。

dirpath是一个字符串,是指向目录的路径。目录名是目录路径中子目录的名称列表(不包括'.‘)。还有“.”)。文件名是dirpath中非目录文件名称的列表。注意,列表中的名称不包含路径组件。要获得文件或目录的完整路径(从顶部开始),请执行os.path.join(dirpath,name)。

尝尝这个

代码语言:javascript
复制
for root, dirs, files in os.walk("/users/home10/tshrestha/brb-view/logs/vdm-sdct-agent/pcoip-logs"):
    lineContainsServerFile = re.compile('.*server.*')
    for filename in files:
            if lineContainsServerFile.match(filename):
                    filename = os.path.join(root, filename)
                    with open(filename,'rb') as files:
                            print 'filename:', filename
                            function_pcoip_packetloss(filename);
票数 1
EN

Stack Overflow用户

发布于 2014-07-01 16:43:08

os.walk()函数是一个三元元组的生成器.每个元组包含一个目录作为其第一个元素。第二个元素是该目录中的子目录列表,第三个元素是文件列表。

要生成每个文件的完整路径,必须连接第一个条目(目录路径)和第三个条目(文件)的文件名。最直截了当和不可知的方法是使用os.path.join()

还要注意,它的使用效率要高得多。

代码语言:javascript
复制
lineContainsServerFile = re.compile('server')

lineContainsServerFile.search(),而不是试图匹配通配符字符串。即使在第一种情况下,尾随的".*也是多余的,因为"server"字符串后面的内容与此无关。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24493065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档