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中Flask框架简单入门实例
Mar 21 Python
详解Python中time()方法的使用的教程
May 22 Python
利用Python中unittest实现简单的单元测试实例详解
Jan 09 Python
Python读取Word(.docx)正文信息的方法
Mar 15 Python
Python字典循环添加一键多值的用法实例
Jan 20 Python
使用Python的SymPy库解决数学运算问题的方法
Mar 27 Python
pycharm部署、配置anaconda环境的教程
Mar 24 Python
python中urllib.request和requests的使用及区别详解
May 05 Python
基于matplotlib中ion()和ioff()的使用详解
Jun 16 Python
python 邮件检测工具mmpi的使用
Jan 04 Python
基于tensorflow __init__、build 和call的使用小结
Feb 26 Python
python如何获取网络数据
Apr 11 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
造势之举?韩国总统候选人发布《星际争霸》地图
2017/04/22 星际争霸
PHP 存储文本换行实现方法
2010/01/05 PHP
php数组操作之键名比较与差集、交集赋值的方法
2014/11/10 PHP
php实现和c#一致的DES加密解密实例
2017/07/24 PHP
详解php 使用Callable Closure强制指定回调类型
2017/10/26 PHP
用JavaScript调用WebService的示例
2008/04/07 Javascript
javascript验证只能输入数字和一个小数点示例
2013/10/21 Javascript
捕获和分析JavaScript Error的方法
2014/03/25 Javascript
JavaScript学习小结(一)——JavaScript入门基础
2015/09/02 Javascript
Jquery判断form表单数据是否变化
2016/03/30 Javascript
vue.js开发环境搭建教程
2017/05/04 Javascript
react-native 封装选择弹出框示例(试用ios&amp;android)
2017/07/11 Javascript
JS闭包的几种常见形式实例详解
2017/09/16 Javascript
jQuery中可见性过滤器简单用法示例
2018/03/31 jQuery
echarts实现地图定时切换散点与多图表级联联动详解
2018/08/07 Javascript
Node.js Event Loop各阶段讲解
2019/03/08 Javascript
jquery制作的移动端购物车效果完整示例
2020/02/24 jQuery
微信小程序连续签到7天积分获得功能的示例代码
2020/08/20 Javascript
全面分析Python的优点和缺点
2018/02/07 Python
set在python里的含义和用法
2019/06/24 Python
linux环境中没有网络怎么下载python
2019/07/07 Python
pytorch加载自己的图像数据集实例
2020/07/07 Python
css3动画过渡实现鼠标跟随导航效果
2018/02/08 HTML / CSS
约瑟夫·特纳男装:Joseph Turner
2017/10/10 全球购物
澳大利亚工具仓库:Tools Warehouse
2018/10/15 全球购物
UNIONBAY官网:美国青少年服装品牌
2019/03/26 全球购物
Jack Rogers官网:美国经典的女性鞋靴品牌
2019/09/04 全球购物
环保倡议书50字
2014/05/15 职场文书
数控专业毕业生求职信
2014/06/12 职场文书
党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
三峡人家导游词
2015/01/31 职场文书
2019如何书写演讲稿?
2019/07/01 职场文书
Idea连接MySQL数据库出现中文乱码的问题
2021/04/14 MySQL
详解Laravel框架的依赖注入功能
2021/05/27 PHP
一篇文章搞懂python混乱的切换操作与优雅的推导式
2021/08/23 Python
Netty客户端接入流程NioSocketChannel创建解析
2022/03/25 Java/Android