首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法从目录读取文件

无法从目录读取文件
EN

Stack Overflow用户
提问于 2015-04-10 02:34:46
回答 4查看 397关注 0票数 0

我有目录结构,

代码语言:javascript
复制
F:\TestData

TestData包含20个名为node1, node2,..., node20的文件夹,每个节点文件夹包含名称为log.10.X的文件。

我需要从所有的节点文件夹中访问每个日志文件,对于这些文件夹,我已经写了一些代码,但它的意思是:File not found - log.*

代码:

代码语言:javascript
复制
directory = "F:\TestData"
p = subprocess.Popen(["find", "./" + directory, "-name", "log.*"], stdout=subprocess.PIPE)
output, err = p.communicate()
foutput = output.split("\n")
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-04-10 02:53:10

Python与POSIX shell不同,它不会在字符串中自动执行全局操作(将*等解释为与相关目录中的文件相关的通配符)。然而,它确实为此目的提供了 module。您可以使用它获取匹配的文件名列表:

代码语言:javascript
复制
import glob

filenames = glob.glob(r'F:\TestData\node*\log.*')
票数 1
EN

Stack Overflow用户

发布于 2015-04-10 02:49:08

您只需使用python获取目录中的文件列表即可。

代码语言:javascript
复制
import os
directory = "F:\TestData\"
file_list = os.listdir(directory)
log_list = filter(lambda x: x.startswith("log"), file_list)

哦,你得编码才能迭代子目录。首先在父目录中访问os.listdir(),然后迭代子目录以获取文件

票数 0
EN

Stack Overflow用户

发布于 2015-04-10 03:00:22

Python的glob模块可能是一种选择。

代码语言:javascript
复制
import glob
directory = 'F:\TestData'
logcontents = [open(f,'r').read() for f in glob.glob(directory + '\node*\log.*')]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29552389

复制
相关文章

相似问题

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