python listdir 共享目录 认证_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, ο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 listdir 共享目录 认证_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表示需要遍历的目 ...
- python内建模块函数_Python中一些内建函数及os等模块的用法
len(obj) # 求长度:obj可以是str.list等对象 split(str, num) # str-分割符,默认空格:num-分割次数 ...
- 如何获取python的当前工作目录-python笔记(一)获取当前目录路径和文件
一.获取当前路径 1.使用sys.argv[0] import sys print sys.argv[0] #输出 #本地路径 2.os模块 import os print os.getcwd() # ...
- os系统共享的 不显示计算机,Windows与Mac OS共享文件-windows无法访问指定设备路径或文件...
大家知道,微软的Windows和苹果的Mac OS是两种不同架构的操作系统.但是,对于用电脑干活的我们来说,其实最终关心的并不是使用什么操作系统,而是如何用这些系统来生成和编辑图.文.声.像等类型的文 ...
- python获取当前目录路径和文件
import os print os.getcwd() #获取当前工作目录路径 print os.path.abspath('.') #获取当前工作目录路径 print os.path.abspath ...
- python笔记(一)获取当前目录路径和文件(抄录)
一.获取当前路径 1.使用sys.argv[0] import sys print sys.argv[0]#输出#本地路径 2.os模块 import os print os.getcwd() #获取 ...
- python进程共享全局变量 时延_Python 进程之间共享数据(全局变量)的方法
进程之间共享数据(数值型): import multiprocessing def func(num): num.value=10.78 #子进程改变数值的值,主进程跟着改变 if __name__= ...
- python manager 共享数据访问_python 进程间数据共享multiProcess.Manger实现解析
一.进程之间的数据共享 展望未来,基于消息传递的并发编程是大势所趋 即便是使用线程,推荐做法也是将程序设计为大量独立的线程集合,通过消息队列交换数据. 这样极大地减少了对使用锁定和其他同步手段的需求, ...
- python dataframe取一列_python - 从pandas DataFrame列标题中获取列表
python - 从pandas DataFrame列标题中获取列表 我想从pandas DataFrame中获取列标题列表. DataFrame将来自用户输入,因此我不知道将会有多少列或将调用它们. ...
最新文章
- 使用maven导入jar包
- PoPo数据可视化第9期
- python爬虫知识大全_(硬知识)Python爬虫知识点梳理,认真看好好学
- Python之Pandas库
- 硬件基础知识---(15) 二极管单项导电特性
- Intel缓存控制相关的寄存器
- virtualbox 安装kali linux虚拟机,kali Linux安装virtualbox虚拟机之爬坑经历
- python并行计算for循环_在python中并行化这个嵌套的for循环
- ansible笔记(8):常用模块之系统类模块(二)
- 游戏开发之类的构造函数调用时机(规则)及类对象作为另一个类的成员变量(C++基础)
- jar包引用版本不一致引发的问题
- 心理测试:DISC性格测试(完整版)
- 用 Python 搭建解一元二次方程的计算器
- 当前位置 计算机英语,计算机常用英语词汇,计算机常用英语词汇
- 如何在HBuilder里面运行php文件
- 【Elasticsearch】Elasticsearch中的 char_filter 使用和讲解
- 攒机笔记二十:改造笔记本电脑(华硕A555L)
- EM78P468 义隆单片机 单键触控
- YApi接口管理平台远程代码执行漏洞(含批量POC)
- 计算机全键在线使用说明书,最全的电脑键盘所有键的功能说明,建议收藏!
热门文章
- android开发修改字体大小,安卓开发——修改Toolbar标题字体大小
- 西门子840d高级编程手册_840D 高级编程
- 惠普 HP Laser 108 激光打印机-电脑手机无线打印.
- 补水黑科技 绿洲AirWater A3加湿器正式发布
- matlab中如何定义局部变量,转 MATLAB自定义函数及局部变量
- 《吉尼斯世界纪录大全2022》正式面世:最大规模水下人鱼秀、最大拼插式塑料积木三维景观、同组无人机连续组成最多队形...
- 怎样操作修改微信登录密码?技巧经验!如何进行更改微信登陆密码?
- php react路由部署,react路由
- [手机Linux] 五,打造属于自己的私有网盘(Cloudreve),跟百度网盘说拜拜
- java socket 全双工客户端_[Java教程]用socket模拟实现全双工通信