Python获取文件路径:os.listdir()和os.walk()
转自https://blog.csdn.net/xxn_723911/article/details/78795033
1.os.listdir(path='')
其中参数path为需要列出的目录路径。该函数返回指定的文件夹包含的文件或文件夹的名字的列表。
2.walk(top, topdown=True, οnerrοr=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)
运行结果如下:
Python获取文件路径:os.listdir()和os.walk()相关推荐
- python获取文件路径下的文件_python 获取文件下所有文件或目录os.walk()的实例
在python3.6版本中去掉了os.path.walk()函数 os.walk() 函数声明:walk(top,topdown=True,oneerror=None) 1.参数top表示需要遍历的目 ...
- python获取文件路径下指定的类型的文件_python学习1-列出指定目录下的指定类型文件...
列出指定目录下的指定类型文件 import sys import os import getopt def DisplayFileAndPath(directory, pfix, pfixset=Fa ...
- python获取文件路径
<code class="language-python">import os base_dir = os.path.dirname(__file__) # 获取当前文 ...
- python 如何获取文件路径_Python如何获取文件路径/目录
一.获取文件路径实现 1.1 获取当前文件路径 import os current_file_path = __file__ print(f"current_file_path: {curr ...
- python合并路径和文件名,python关于文件路径和文件名的操作
os.path.abspath(path) #返回绝对路径(包含文件名的全路径) os.path.basename(path) -- 去掉目录路径获取文件名 os.path.dirname(path) ...
- python 获取文件夹所有文件列表_python获取文件夹下所有文件及os模块方法
python获取文件夹下所有文件 方法一:使用os.listdir import os for filename in os.listdir(r'c:\windows'): print filenam ...
- 详细讲解Python遍历目录的文件夹(dir)、文件(file)的三种方法:os.listdir、os.walk和os.scandir
在使用Python开发项目的时候,会遇到需要遍历文件夹.文件的需求,我整理了三种主流方法:os.listdir.os.walk和os.scandir,并进行了详细的讲解. 用于实验的目录: .test ...
- python获取文件路径名_python文件名获取文件路径
如何使用Python获取文件所在目录和文件名 python中如何根据文件名找他的路径.现在我遍历到怎么才能将某一个文件对应的路径找到呢? 遍历用os.walk: import osfrom os.pa ...
- python获取绝对路径_python文件绝对路径写法介绍(windows)
python文件绝对路径写法介绍(windows) python在描述路径时有两种方式: 'd:\\a.txt',转义的方式 r'd:\a.txt',声明字符串不需要转义 (使用raw string, ...
最新文章
- 博士申请 | 澳门大学汪澎洋助理教授招收机器学习方向全奖博士生
- 月饼哪家强?Python 告诉你
- 二级域名session共享php本地,PHP二级域名session共享方案
- MySQL学习(四)查询
- 后端:Java中的BigDecimal类你了解多少?
- sketch浮动布局_使用智能布局和调整大小在Sketch中创建更好的可重用符号
- 解读 Knative Eventing v0.10.0 最新版本特性
- mysql 日志同步 数据不同步_Mysql互为主从问题--日志同步数据不同步
- 用postman做接口测试
- kafka集群安装部署
- Android开发笔记(一百一十二)开发工具
- 渐进式 Web 应用程序是移动开发的未来吗?
- PowerPoint优点全体验
- Stopwatch 类
- actor模型 java框架,actor模型(actor模式优缺点)
- JAVA项目实战开发电商项目案例(一)前后端项目分离
- 磁链转种子,种子转磁链
- 如何快速提高视唱练耳能力
- [Inside HotSpot] C1编译器HIR的构造
- 轻松管好团队,就靠RACI模型|优思学院
热门文章
- ASP.NET配置FCKeditor文本编辑器
- [转载] python enumerate函数 实例_python中使用enumerate函数遍历元素实例
- 如何从应用直接跳转AppStore 电话 短信 邮件
- java的前台与后台
- iOS: AFNetworking手动配置(iOS7.1, AF2.2.4)
- 关于多维数组编码与解码的问题
- 微软silverlight视频教程
- [转载]Informix平安特征庇护数据的详细方法
- 在AJAX中可以使用的Response.Redirect 的冲突解决办法
- 离开,是一个新的开始