python 自定义获取文件目录(Python使用os.listdir和os.walk获取文件路径与文件下所有目录的方法)
python 自定义获取文件目录
Python使用os.listdir和os.walk获取文件路径与文件下所有目录的方法在python3.6版本中去掉了os.path.walk()函数
os.walk()
函数声明:walk(top,topdown=True,oneerror=None)
- 1、参数top表示需要遍历的目录树的路径
- 2、参数农户topdown默认是"True",表示首先返回根目录树下的文件,然后,再遍历目录树的子目录。topdown的值为"False",则表示先遍历目录树的子目录,返回子目录下的文件,最后返回根目录下的文件
- 3、参数oneerror的默认值是"None",表示忽略文件遍历时产生的错误,如果不为空,则提供一个自定义函数提示错误信息,后边遍历抛出异常
- 4、函数返回一个元组,该元组有3个元素,这3个元素分别表示'每次遍历的路径名,目录列表和文件列表'
os.walk()实例:
|
import os def walk(path): if not os.path.exists(path): return - 1 for root,dirs,names in os.walk(path): for filename in names: print (os.path.join(root,filename)) #路径和文件名连接构成完整路径 if __name__ = = '__main__' : path = "C:\\Users\\Administrator\\Desktop\\2017-9-1" walk(path) |
输出结果:
C:\Users\Administrator\Desktop\2017-9-1\2017-9-1.txt
C:\Users\Administrator\Desktop\2017-9-1\2017-9-1storage.txt
C:\Users\Administrator\Desktop\2017-9-1\apk.conf
C:\Users\Administrator\Desktop\2017-9-1\数据采集导入质量统计_2017-09-01.docx
C:\Users\Administrator\Desktop\2017-9-1\test1\2017-9-1.txt
C:\Users\Administrator\Desktop\2017-9-1\test2\2017-9-1.txt
1.os.listdir(path='')
其中参数path为需要列出的目录路径。该函数返回指定的文件夹包含的文件或文件夹的名字的列表。
2.walk(top, topdown=True, onerror=None, followlinks=False)
os.walk(path)返回三个值:parent, dirnames, filenames,分别表示path的路径、path路径下的文件夹的名字和path路径下文件夹以外的其他文件。
应用1:在一个目录下面只有文件时可以使用os.listdir()。
比如文件test_file文件中包含三个文件,即:
test_file:
test1.txt
test2.txt
test3.txt
可以使用如下代码获取每个文件的绝对路径:
|
>>> import os >>> path = r 'C:\Users\XXN\Desktop\test_file' >>> for each_file in os.listdir(path): print (os.path.join(path,each_file)) |
结果如下:
C:\Users\XXN\Desktop\test_file\test1.txt
C:\Users\XXN\Desktop\test_file\test2.txt
C:\Users\XXN\Desktop\test_file\test3.txt
应用2:当一个目录下面既有文件又有目录(文件夹),可使用os.walk()读取里面所有文件。
比如文件test_file中既包含文件也包含文件夹:
Test_file:
file1:
test1.txt
test2.txt
test3.txt
file2:
test1.txt
test2.txt
test3.txt
test1.txt
test2.txt
test3.txt
使用os.walk()可获得:
|
>>> import os >>> path = r 'C:\Users\XXN\Desktop\test_file' >>> for parent,dirnames,filenames in os.walk(path): print (parent,dirnames,filenames) |
结果如下:
C:\Users\XXN\Desktop\test_file ['file1', 'file2'] ['test1.txt', 'test2.txt', 'test3.txt']
C:\Users\XXN\Desktop\test_file\file1 [] ['test1.txt', 'test2.txt', 'test3.txt']
C:\Users\XXN\Desktop\test_file\file2 [] ['test1.txt', 'test2.txt', 'test3.txt']
- parent:列出了目录路径下面所有存在的目录的名称
- dirnames:文件夹名
- filenames:列出了目录路径下面所有文件的名称
通过下面代码可获得给定路径下所有的文件路径:
|
>>> import os >>> path = r 'C:\Users\XXN\Desktop\test_file' >>> for parent,dirnames,filenames in os.walk(path): for filename in filenames: print (os.path.join(parent,filename)) |
结果如下:
C:\Users\XXN\Desktop\test_file\test1.txt
C:\Users\XXN\Desktop\test_file\test2.txt
C:\Users\XXN\Desktop\test_file\test3.txt
C:\Users\XXN\Desktop\test_file\file1\test1.txt
C:\Users\XXN\Desktop\test_file\file1\test2.txt
C:\Users\XXN\Desktop\test_file\file1\test3.txt
C:\Users\XXN\Desktop\test_file\file2\test1.txt
C:\Users\XXN\Desktop\test_file\file2\test2.txt
C:\Users\XXN\Desktop\test_file\file2\test3.txt
应用3:编写一个程序,用户输入关键字,查找当前文件夹内(如果当前文件夹内包含文件夹,则进入文件夹继续搜索)所有含有该关键字的文本文件(.txt后缀),要求显示该文件所在的位置以及关键字在文件中的具体位置(第几行第几个字符)
思路:
1.先把当前文件夹下的.txt文件以及当前文件包含的子文件夹中的.txt文件的路径全部保存至一个txt_list列表中;
2.以读取的方式打开txt_list中每个路径的文件,并将每个文件中出现关键字的行数以及关键字索引保存至一个字典dict_keywords中。
3.按格式输出。
代码演示:
|
import os def print_keywords(dict_keywords): keys = dict_keywords.keys() keys = sorted (keys) for each in keys: print ( '关键字出现在第 %s 行,第 %s 个位置。' % (each, str (dict_keywords[each]))) def line_keywords(line, keywords): key_index = [] start = line.find(keywords) while start! = - 1 : key_index.append(start + 1 ) start = line.find(keywords, start + 1 ) return key_index def file_keywords(filename, keywords): f = open (filename, 'r' ) line = 0 dict_keywords = dict () for each_line in f: line + = 1 if keywords in each_line: key_index = line_keywords(each_line, keywords) dict_keywords[line] = key_index f.close() return dict_keywords def file_search(keywords, flag): all_files = os.walk(os.getcwd()) txt_list = [] for each in all_files: for filename in each[ 2 ]: if os.path.splitext(filename)[ 1 ] = = '.txt' : txt_list.append(os.path.join(each[ 0 ],filename)) for each_txt_file in txt_list: dict_keywors = file_keywords(each_txt_file, keywords) print ( '====================================================' ) print ( '在文件【%s】中找到关键字【%s】' % (each_txt_file, keywords)) if flag in [ 'YES' , 'Yes' , 'yes' ]: print_keywords(dict_keywors) keywords = input ( "请将该脚本放于待查找的文件夹中,请输入关键字:" ) flag = input ( "请问是否需要打印关键字【%s】在文件中的具体位置(YES/NO):" ) file_search(keywords, flag) |
运行结果如下:
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对开心学习网的支持。如果你想了解更多相关内容请查看下面相关链接
原文链接:https://blog.csdn.net/sxf_123456/article/details/77857057
- 如何对python中列表中的数据运算(Python3.5集合及其常见运算实例详解)
- python自动识别旋转验证码(Python实现字符型图片验证码识别完整过程详解)
- python 提取微信消息(python实现文件助手中查看微信撤回消息)
- pythonkeys怎么用(浅谈python的深浅拷贝以及fromkeys的用法)
- python群聊提示(python-itchat 统计微信群、好友数量,及原始消息数据的实例)
- python开源协议简介(对python 自定义协议的方法详解)
- python基础教程常用函数整理(Python基础之函数的定义与使用示例)
- python经典算法(浅谈python常用程序算法)
- python怎么去掉字符串的空格(Python切片操作去除字符串首尾的空格)
- 简述python2与python3的不同点(Python2与Python3的区别实例分析)
- nginxpython编写模块(Python开发之Nginx+uWSGI+virtualenv多项目部署教程)
- mongodb python教程(python使用pymongo操作mongo的完整步骤)
- pythontime模块有哪些(Python3.5内置模块之time与datetime模块用法实例分析)
- python对字典值排序(Python实现字典按key或者value进行排序操作示例sorted)
- python批量自动化访问网站(python 自动批量打开网页的示例)
- python创建pdf(Python玩转PDF的各种骚操作)
- 冬季钓鱼子线用 长 还是 短(冬季钓鱼子线用)
- 鱼竿 夏钓短,冬钓长 ,一定是这样 认清优缺点在选竿(鱼竿夏钓短冬钓长)
- 鲢鳙钓底还是钓浮 流水的水域应怎样做钓(鲢鳙钓底还是钓浮)
- 入秋后的第二场苹果发布会来了 全新M1系列芯片登场(入秋后的第二场苹果发布会来了)
- 苹果正式发布自研芯片M1 5nm 32核心 彻底放弃Intel(苹果正式发布自研芯片M1)
- 苹果自研芯片跑分对比 A16芯片排名靠后,M1系列霸榜(苹果自研芯片跑分对比)
热门推荐
- python获取字符串类型(python3利用ctypes传入一个字符串类型的列表方法)
- 管理公有云方案(ZKEYS公有云管理系统一键部署操作流程)
- 阿里云ecs 获取公网ip(阿里云ECS云服务器未添加安全组规则设置导致通过公网IP地址不能访问)
- dede源码如何新增页面(dedecms 在内容模板里调用栏目内容即{dede:field.content/})
- sql中where和having可以同时用吗(SQL where条件和jion on条件的详解及区别)
- css用clearfix清除浮动
- javascript作用域实例(JavaScript defineProperty如何实现属性劫持)
- xshell服务器(如何使用Xshell连接云服务器)
- python的多线程比多进程效率高(Python中单线程、多线程和多进程的效率对比实验实例)
- javascript中定义数组的方法(JavaScript中数组sort方法的基本使用与踩坑记录)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9