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单线程实现多个定时器示例
Mar 30 Python
用Python实现通过哈希算法检测图片重复的教程
Apr 02 Python
Python下的常用下载安装工具pip的安装方法
Nov 13 Python
详解python开发环境搭建
Dec 16 Python
python将ansible配置转为json格式实例代码
May 15 Python
理论讲解python多进程并发编程
Feb 09 Python
详解Django中CBV(Class Base Views)模型源码分析
Feb 25 Python
python通过对字典的排序,对json字段进行排序的实例
Feb 27 Python
python异常处理、自定义异常、断言原理与用法分析
Mar 23 Python
Spark处理数据排序问题如何避免OOM
May 21 Python
python中函数返回多个结果的实例方法
Dec 16 Python
基于Python的EasyGUI学习实践
May 07 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
PHP 类相关函数的使用详解
2013/05/10 PHP
解析PHP高效率写法(详解原因)
2013/06/20 PHP
PHP解决URL中文GBK乱码问题的两种方法
2014/06/03 PHP
php实现可用于mysql,mssql,pg数据库操作类
2014/12/13 PHP
XHTML下,JS浮动代码失效的问题
2009/11/12 Javascript
Javascript下IE与Firefox下的差异兼容写法总结
2010/06/18 Javascript
javascript和HTML5利用canvas构建猜牌游戏实现算法
2013/07/17 Javascript
JQuery创建DOM节点的方法
2015/06/11 Javascript
javascript 四十条常用技巧大全
2016/09/09 Javascript
有关suggest快速删除后仍然出现下拉列表的bug问题
2016/12/02 Javascript
详解JavaScript的闭包、IIFE、apply、函数与对象
2016/12/21 Javascript
浅谈JavaScript的计时器对象
2016/12/26 Javascript
Vue 中使用vue2-highcharts实现top功能的示例
2018/03/05 Javascript
react中fetch之cors跨域请求的实现方法
2018/03/14 Javascript
解决vue scoped scss 无效的问题
2020/09/04 Javascript
JavaScript 绘制饼图的示例
2021/02/19 Javascript
vue实现桌面向网页拖动文件的示例代码(可显示图片/音频/视频)
2021/03/01 Vue.js
[59:08]DOTA2上海特级锦标赛C组小组赛#2 LGD VS Newbee第一局
2016/02/27 DOTA
Python操作RabbitMQ服务器实现消息队列的路由功能
2016/06/29 Python
python如何实现内容写在图片上
2018/03/23 Python
深入分析python中整型不会溢出问题
2018/06/18 Python
python 统计数组中元素出现次数并进行排序的实例
2018/07/02 Python
基于sklearn实现Bagging算法(python)
2019/07/11 Python
python中的TCP(传输控制协议)用法实例分析
2019/11/15 Python
Python趣味入门教程之循环语句while
2020/08/26 Python
python exit出错原因整理
2020/08/31 Python
AOP的定义以及作用
2013/09/08 面试题
机电工程专业应届生求职信
2013/10/03 职场文书
餐厅执行经理岗位职责范本
2014/02/26 职场文书
公安局副政委班子个人对照检查材料
2014/10/04 职场文书
学生党员检讨书范文
2014/12/27 职场文书
个人年度总结报告
2015/03/09 职场文书
教师节简报
2015/07/20 职场文书
关于践行三严三实的心得体会
2016/01/05 职场文书
python3 实现mysql数据库连接池的示例代码
2021/04/17 Python
Python中tqdm的使用和例子
2022/09/23 Python