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中time模块与datetime模块在使用中的不同之处
Nov 24 Python
Python向日志输出中添加上下文信息
May 24 Python
老生常谈Python之装饰器、迭代器和生成器
Jul 26 Python
Python初学者需要注意的事项小结(python2与python3)
Sep 26 Python
详解pandas安装若干异常及解决方案总结
Jan 10 Python
win10下python2和python3共存问题解决方法
Dec 23 Python
pytorch 使用加载训练好的模型做inference
Feb 20 Python
Python3监控windows,linux系统的CPU、硬盘、内存使用率和各个端口的开启情况详细代码实例
Mar 18 Python
python实现人机五子棋
Mar 25 Python
解决Python在导入文件时的FileNotFoundError问题
Apr 10 Python
Python+Matplotlib+LaTeX玩转数学公式
Feb 24 Python
python神经网络 tf.name_scope 和 tf.variable_scope 的区别
May 04 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互换两个变量值的方法(不用第三变量)
2016/11/14 PHP
php下载远程大文件(获取远程文件大小)的实例
2017/06/17 PHP
laravel框架语言包拓展实现方法分析
2019/11/22 PHP
javascript开发技术大全-第1章javascript概述
2011/07/03 Javascript
js动态控制table的tr、td增加及删除的具体实现
2014/04/30 Javascript
绑定回车enter事件代码
2014/05/18 Javascript
javascript实现密码强度显示
2015/03/18 Javascript
js关于getImageData跨域问题的解决方法
2016/10/14 Javascript
js调用刷新界面的几种方式
2017/05/03 Javascript
Node.js连接mongodb实例代码
2017/06/06 Javascript
jQuery实现倒计时功能 jQuery实现计时器功能
2017/09/19 jQuery
webpack组织模块打包Library的原理及实现
2018/03/10 Javascript
基于vue-cli npm run build之后vendor.js文件过大的解决方法
2018/09/27 Javascript
layui内置模块layim发送图片添加加载动画的方法
2019/09/23 Javascript
vue分页插件的使用方法
2019/12/25 Javascript
python ip正则式
2009/05/07 Python
跟老齐学Python之数据类型总结
2014/09/24 Python
对Python3.6 IDLE常用快捷键介绍
2018/07/16 Python
python版飞机大战代码分享
2018/11/20 Python
django项目用higcharts统计最近七天文章点击量
2019/08/17 Python
python2.7的flask框架之引用js&amp;css等静态文件的实现方法
2019/08/22 Python
python 进程的几种创建方式详解
2019/08/29 Python
Python中*args和**kwargs的区别详解
2019/09/17 Python
学习Python爬虫的几点建议
2020/08/05 Python
实例教程 利用html5和css3打造一款创意404页面
2014/10/20 HTML / CSS
可能这些是你想要的H5软键盘兼容方案(小结)
2019/04/23 HTML / CSS
灵泰克Java笔试题
2016/01/09 面试题
工程业务员工作职责
2013/12/07 职场文书
成品库仓管员岗位职责
2014/04/06 职场文书
诉讼财产保全担保书
2014/05/20 职场文书
党员自评材料范文
2014/12/17 职场文书
装饰技术负责人岗位职责
2015/04/13 职场文书
PostgreSQL存储过程实用脚本(二):创建函数入门
2021/04/05 PostgreSQL
解决Mysql的left join无效及使用的注意事项说明
2021/07/01 MySQL
Python 快速验证代理IP是否有效的方法实现
2021/07/15 Python
Python PIL按比例裁剪图片
2022/05/11 Python