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检测QQ在线状态的方法
May 09 Python
使用python实现BLAST
Feb 12 Python
Django使用HttpResponse返回图片并显示的方法
May 22 Python
python使用matplotlib模块绘制多条折线图、散点图
Apr 26 Python
python广度优先搜索得到两点间最短路径
Jan 17 Python
分析运行中的 Python 进程详细解析
Jun 22 Python
Pytorch 实现自定义参数层的例子
Aug 17 Python
基于python实现蓝牙通信代码实例
Nov 19 Python
python GUI库图形界面开发之PyQt5浏览器控件QWebEngineView详细使用方法
Feb 26 Python
Python logging自定义字段输出及打印颜色
Nov 30 Python
Python机器学习之PCA降维算法详解
May 19 Python
 python中的元类metaclass详情
May 30 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 类商品秒杀计时实现代码
2010/05/05 PHP
php checkbox复选框值的获取与checkbox默认值输出方法
2010/05/15 PHP
laravel5.2实现区分前后台用户登录的方法
2017/01/11 PHP
php+mysql+jquery实现日历签到功能
2017/02/27 PHP
详解new function(){}和function(){}() 区别分析
2008/03/22 Javascript
javascript一些实用技巧小结
2011/03/18 Javascript
jQuery 中使用JSON的实现代码
2011/12/01 Javascript
Javascript验证用户输入URL地址是否为空及格式是否正确
2014/10/09 Javascript
jQuery中hover方法和toggle方法使用指南
2015/02/27 Javascript
常用的JavaScript模板引擎介绍
2015/02/28 Javascript
JS制作手机端自适应缩放显示
2015/06/11 Javascript
javascript中加var和不加var的区别 你真的懂吗
2016/01/06 Javascript
jQuery实现微信长按识别二维码功能
2016/08/26 Javascript
bootstrap fileinput 上传插件的基础使用
2017/02/17 Javascript
微信小程序开发之选项卡(窗口底部TabBar)页面切换
2017/04/12 Javascript
bootstrap-Treeview实现级联勾选
2017/11/23 Javascript
Vue脚手架的简单使用实例
2018/07/10 Javascript
详解Vue 匿名、具名和作用域插槽的使用方法
2019/04/22 Javascript
javascript中闭包closure的深入讲解
2021/03/03 Javascript
Tensorflow卷积神经网络实例
2018/05/24 Python
Tensorflow中使用tfrecord方式读取数据的方法
2018/06/19 Python
keras 模型参数,模型保存,中间结果输出操作
2020/07/06 Python
详解Html5中video标签那些属性和方法
2019/07/01 HTML / CSS
Speedo美国:澳大利亚顶尖泳衣制造商
2016/08/03 全球购物
IFCHIC台湾:欧美国际设计师品牌
2019/05/18 全球购物
俄罗斯最大的香水和化妆品网上商店:Randewoo
2020/11/05 全球购物
应用数学自荐书范文
2013/11/24 职场文书
教师自荐信范文
2013/12/09 职场文书
两只小狮子教学反思
2014/02/05 职场文书
小学德育工作经验交流材料
2014/05/22 职场文书
幼儿教师求职信
2014/05/24 职场文书
股指期货心得体会
2014/09/10 职场文书
安全生产标语口号
2015/12/26 职场文书
Go使用协程交替打印字符
2021/04/29 Golang
为什么在foreach循环中JAVA集合不能添加或删除元素
2021/06/11 Java/Android
javascript的var与let,const之间的区别详解
2022/02/18 Javascript