首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用Python遍历目录

使用Python遍历目录
EN

Stack Overflow用户
提问于 2013-10-25 18:17:40
回答 1查看 341.9K关注 0票数 193

我需要遍历给定目录的子目录并搜索文件。如果我得到一个文件,我必须打开它,更改内容,并用我自己的代码行替换它。

我试过这个:

代码语言:javascript
复制
import os

rootdir ='C:/Users/sid/Desktop/test'

for subdir, dirs, files in os.walk(rootdir):
    for file in files:
        f=open(file,'r')
        lines=f.readlines()
        f.close()
        f=open(file,'w')
        for line in lines:
            newline = "No you are not"
            f.write(newline)
        f.close()

但是我得到了一个错误。我做错了什么?

EN

回答 1

Stack Overflow用户

发布于 2017-05-28 23:11:39

返回子目录中所有文件的另一种方法是使用Python3.4中引入的the pathlib module,它提供了一种面向对象的方法来处理文件系统路径(在Python2.7上也可以通过the pathlib2 module on PyPi获得Pathlib):

代码语言:javascript
复制
from pathlib import Path

rootdir = Path('C:/Users/sid/Desktop/test')
# Return a list of regular files only, not directories
file_list = [f for f in rootdir.glob('**/*') if f.is_file()]

# For absolute paths instead of relative the current dir
file_list = [f for f in rootdir.resolve().glob('**/*') if f.is_file()]

从Python3.5开始,glob模块也支持递归文件查找:

代码语言:javascript
复制
import os
from glob import iglob

rootdir_glob = 'C:/Users/sid/Desktop/test/**/*' # Note the added asterisks
# This will return absolute paths
file_list = [f for f in iglob(rootdir_glob, recursive=True) if os.path.isfile(f)]

以上任何一种方法的file_list都可以在不需要嵌套循环的情况下迭代:

代码语言:javascript
复制
for f in file_list:
    print(f) # Replace with desired operations
票数 26
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19587118

复制
相关文章

相似问题

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