python遍历文件目录、批量处理同类文件


Posted in Python onAugust 31, 2019

本文实例为大家分享了python遍历文件目录、批量处理同类文件的具体代码,供大家参考,具体内容如下

目录操作

1、获取当前目录

import os
curr_path=os.path.dirname(__file__) #返回当前文件所在的目录,即当前运行的脚本所在父目录
print curr_path

运行示例

python遍历文件目录、批量处理同类文件

(1)使用os.path.dirname(__file__)时,是针对运行时对所给程序脚本的路径来获取父目录的,即截取你输入的脚本路径的所在目录名称,如上图示例,输入绝对路径时返回绝对路径,输入相对路径时返回相对路径,如果只输入了脚本名称,则返回空。

注:当从命令行中进入python环境时时,参数__file__不能使用)

(2)当直接使用os.path.dirname(“/home/test_MK/test.py”)时,直接返回“/home/test_MK”

2、获取目录文件列表

file_list=os.listdir("/home/test_MK/test")) 
print file_list

运行示例

python遍历文件目录、批量处理同类文件python遍历文件目录、批量处理同类文件

3、获取该目录下文件夹或者文件列表

path="/home/test_MK/test"
objects=os.listdir(path)
dir_list=[] #存放目录列表
file_list=[] #存放文件列表
for obj in objects:
 if os.path.isdir(os.path.join(path, obj)):#判断是否是目录os.path.join()用来将路径拼接
 dir_list.append(os.path.join(path, obj))#保存时保存完整路径才能对其进行后续操作
 print "dir:",obj
 else:
 file_list.append(os.path.join(path, obj))
 print "file:",obj
print "目录列表:",dir_list
print "文件列表:",file_list
#如果项判断是否是文件时用os.isfile()

(注:使用os.isdir()与os.isfile()时,参数必须是一个相对路径或者绝对路径,不能光是一个文件名或者目录名称,这也是上面示例代码中使用os.path.join()的原因,否则函数将判断不出正确结果)

运行示例

python遍历文件目录、批量处理同类文件

批量处理目录下同类文件

以处理pcap文件为例

1、获取某一文件夹下所有pcap包路径,过滤掉其它文件

def getPathFile(path):
 '''
 name:getPathFile
 function:获取所给文件夹下所有pcap文件路径
 path:所给文件夹路径
 '''
 Path = []
 try:
 pathDir = os.listdir(path)
 for allDir in pathDir:
  child = os.path.join('%s/%s' % (path, allDir))
  #跳过文件夹以及非流量包文件,将后缀名改为自己需要的文件类型即可实现自己的过滤
  if os.path.isfile(child) and (".pcap" in str(allDir) or (".cap" in str(allDir))): 
  Path.append(child)
 except:
 pass
 return Path

2、处理函数,打印一个pcap文件中所有数据包的五元组信息{src_ip,src_port,dst_ip,dst_port}

def print_pack_f(file_path):
 '''
 name:print_pack_f
 function:打印一个pcap文件中所有数据包的五元组信息
 file_path:所给pcap文件路径
 '''
 file_p= open(file_path)
 pcap = dpkt.pcap.Reader(file_p) 
 if not pcap:
 return
 print "\n\n*******file:%s*******\n"% file_path
 for (ts,buf) in pcap:
 try:
 eth = dpkt.ethernet.Ethernet(buf) #解包,物理层
 if not isinstance(eth.data, dpkt.ip.IP): #解包,网络层
 continue
 ip = eth.data
 src_ip="%d.%d.%d.%d"%tuple(map(ord,list(ip.src))) 
 dst_ip="%d.%d.%d.%d"%tuple(map(ord,list(ip.dst)))
 if (not isinstance(ip.data, dpkt.tcp.TCP)) and (not isinstance(ip.data, dpkt.udp.UDP)): #解包,传输层
 continue
 transf= ip.data
 print "<",src_ip,":",transf.sport,"-->",dst_ip,":",transf.dport,">"
 except Exception,err:
 print "[error] %s" % err

3、调用示例

def main(dir_path):
 all_file_path=getPathFile(dir_path) #获取目录下所有pcap文件路径
 for file in all_file_path: #遍历处理
 print_pack_f(file) #单个pcap文件处理,可将本函数替换成自定义的功能,便可实现批量处理

if __name__ == '__main__':
 opts,args = getopt.getopt(sys.argv[1:], "hi:") #从命令行获取参数
 if not opts: #若没有带参数
 print "\n\
 *******************\n\
 warn! please enter related parameters,enter -h for help!\n\n\
 *******************\n"
 sys.exit()
 input_path=''
 for op, value in opts:
 if op == "-i":
 input_path = value
 elif op == "-h":
 usage() #帮助信息,只是简单的一个输出函数,输出内容自定义
 sys.exit()
 main(input_path)

结果展示

测试目录如下

python遍历文件目录、批量处理同类文件

运行结果(python test.py -i ./test)

python遍历文件目录、批量处理同类文件

完毕

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python 自动补全(vim)
Nov 30 Python
Python数据类型详解(四)字典:dict
May 12 Python
python 环境变量和import模块导入方法(详解)
Jul 11 Python
python文件特定行插入和替换实例详解
Jul 12 Python
Python简单读取json文件功能示例
Nov 30 Python
Pycharm无法显示动态图片的解决方法
Oct 28 Python
Python面向对象思想与应用入门教程【类与对象】
Apr 12 Python
python多线程同步实例教程
Aug 11 Python
python爬虫之爬取百度音乐的实现方法
Aug 24 Python
Python DataFrame使用drop_duplicates()函数去重(保留重复值,取重复值)
Jul 20 Python
学习Python爬虫的几点建议
Aug 05 Python
将Python代码打包成.exe可执行文件的完整步骤
May 12 Python
解决Pycharm 包已经下载,但是运行代码提示找不到模块的问题
Aug 31 #Python
python批量处理文件或文件夹
Jul 28 #Python
在pycharm中显示python画的图方法
Aug 31 #Python
关于django 1.10 CSRF验证失败的解决方法
Aug 31 #Python
详解python中的模块及包导入
Aug 30 #Python
详解Python self 参数
Aug 30 #Python
Python 70行代码实现简单算式计算器解析
Aug 30 #Python
You might like
古巴咖啡 Cubita琥爵咖啡 独特的加勒比海风味咖啡
2021/03/06 新手入门
PHP入门速成教程
2007/03/19 PHP
一个简单的PHP验证码实现代码
2014/05/10 PHP
模板引擎smarty工作原理以及使用示例
2014/05/25 PHP
php与flash as3 socket通信传送文件实现代码
2014/08/16 PHP
php使用glob函数快速查询指定目录文件的方法
2014/11/15 PHP
初识ThinkPHP控制器
2016/04/07 PHP
深入理解PHP中的empty和isset函数
2016/05/26 PHP
thinkphp5 URL和路由的功能详解与实例
2017/12/26 PHP
通过length属性判断jquery对象是否存在
2013/10/18 Javascript
ExtJS实现文件下载的方法实例
2013/11/09 Javascript
js+html5实现的自由落体运动效果代码
2016/01/28 Javascript
图解prototype、proto和constructor的三角关系
2016/07/31 Javascript
常用Javascript函数与原型功能收藏(必看篇)
2016/10/09 Javascript
jquery-mobile表单的创建方法详解
2016/11/23 Javascript
axios学习教程全攻略
2017/03/26 Javascript
vue开发调试神器vue-devtools使用详解
2017/07/13 Javascript
史上最全JavaScript常用的简写技巧(推荐)
2017/08/17 Javascript
vue + webpack如何绕过QQ音乐接口对host的验证详解
2018/07/01 Javascript
Vue运用transition实现过渡动画
2019/05/06 Javascript
python使用beautifulsoup从爱奇艺网抓取视频播放
2014/01/23 Python
Python+OpenCV实现车牌字符分割和识别
2018/03/31 Python
python 读取dicom文件,生成info.txt和raw文件的方法
2019/01/24 Python
python统计中文字符数量的两种方法
2019/01/31 Python
pybind11在Windows下的使用教程
2019/07/04 Python
python实现连连看辅助之图像识别延伸
2019/07/17 Python
python 根据字典的键值进行排序的方法
2019/07/24 Python
Python实现简单的猜单词小游戏
2020/10/28 Python
css3制作动态进度条以及附加jQuery百分比数字显示
2012/12/13 HTML / CSS
关于canvas绘制模糊问题的解决方法
2019/09/24 HTML / CSS
复核员上岗演讲稿
2014/01/05 职场文书
秋天的图画教学反思
2014/05/01 职场文书
二手车转让协议书
2015/01/29 职场文书
2016教师学习教育法心得体会
2016/01/19 职场文书
导游词之无锡东林书院
2019/12/11 职场文书
如何利用Python实现n*n螺旋矩阵
2022/01/18 Python