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 相关文章推荐
Tornado Web服务器多进程启动的2个方法
Aug 04 Python
在Python中实现贪婪排名算法的教程
Apr 17 Python
Win7下Python与Tensorflow-CPU版开发环境的安装与配置过程
Jan 04 Python
分析Python中解析构建数据知识
Jan 20 Python
50行Python代码实现人脸检测功能
Jan 23 Python
python中实现数组和列表读取一列的方法
Apr 03 Python
Python实现求一个集合所有子集的示例
May 04 Python
简单介绍python封装的基本知识
Aug 10 Python
python 使用cycle构造无限循环迭代器
Dec 02 Python
解决python 在for循环并且pop数组的时候会跳过某些元素的问题
Dec 11 Python
Python爬虫分析微博热搜关键词的实现代码
Feb 22 Python
Python天气语音播报小助手
Sep 25 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 如何向 MySQL 发送数据
2006/10/09 PHP
PHP中动态显示签名和ip原理
2007/03/28 PHP
php下实现折线图效果的代码
2007/04/28 PHP
php二维码生成以及下载实现
2017/09/28 PHP
从阿里妈妈发现的几个不错的表单验证函数
2007/09/21 Javascript
javascript 浏览器检测代码精简版
2010/03/04 Javascript
设为首页加入收藏兼容360/火狐/谷歌/IE等主流浏览器的代码
2013/03/26 Javascript
js点击更换背景颜色或图片的实例代码
2013/06/25 Javascript
document.write()及其输出内容的样式、位置控制
2013/08/12 Javascript
JSON 数字排序多字段排序介绍
2013/09/18 Javascript
jQuery遍历对象、数组、集合实例
2014/11/08 Javascript
在JavaScript中处理字符串之link()方法的使用
2015/06/08 Javascript
理解Javascript的动态语言特性
2015/06/17 Javascript
动态加载js文件简单示例
2016/04/21 Javascript
JS组件系列之Bootstrap table表格组件神器【终结篇】
2016/05/10 Javascript
web 前端常用组件之Layer弹出层组件
2016/09/22 Javascript
原生JavaScript制作计算器
2016/10/16 Javascript
JavaScript的六种继承方式(推荐)
2017/06/26 Javascript
使用vue-cli(vue脚手架)快速搭建项目的方法
2018/05/21 Javascript
浅谈vue后台管理系统权限控制思考与实践
2018/12/19 Javascript
可用于监控 mysql Master Slave 状态的python代码
2013/02/10 Python
Python实现ping指定IP的示例
2018/06/04 Python
Python爬虫 批量爬取下载抖音视频代码实例
2019/08/16 Python
python 实现绘制整齐的表格
2019/11/18 Python
Python偏函数实现原理及应用
2020/11/20 Python
css3的transform中scale缩放详解
2014/12/08 HTML / CSS
计算机专业个人求职自荐信
2013/09/21 职场文书
领导证婚人证婚词
2014/01/13 职场文书
七年级英语教学反思
2014/01/15 职场文书
学校募捐倡议书
2014/05/14 职场文书
机械电子工程专业求职信
2014/06/22 职场文书
教师个人查摆剖析材料
2014/10/14 职场文书
2015大学生实训报告
2014/11/05 职场文书
西部计划志愿者工作总结
2015/08/11 职场文书
Python的三个重要函数详解
2022/01/18 Python
python保存图片的四个常用方法
2022/02/28 Python