python遍历文件目录、批量处理同类文件
作者:MK_夕阳 发布时间:2021-10-19 14:58:12
标签:python,遍历文件,批量处理
本文实例为大家分享了python遍历文件目录、批量处理同类文件的具体代码,供大家参考,具体内容如下
目录操作
1、获取当前目录
import os
curr_path=os.path.dirname(__file__) #返回当前文件所在的目录,即当前运行的脚本所在父目录
print curr_path
运行示例
(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
运行示例
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()的原因,否则函数将判断不出正确结果)
运行示例
批量处理目录下同类文件
以处理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 test.py -i ./test)
完毕
来源:https://blog.csdn.net/qq_33515733/article/details/88887978


猜你喜欢
- 动态图现在已经融入了我们的日常网络生活,大大丰富了我们的表达方式和交流趣味性。常常是一言不合就扔动图,我这里就不举例子了,例子太多,平时大家
- 感觉上次写的植物大战僵尸与俄罗斯方块的反应还不错,这次这个文章就更有动力了这次就写一个天天酷跑吧写出来的效果图就是这样了下面就更新一下全部的
- 前言现在我能一整天都严肃地盯着屏幕,看起来就像在很认真地工作,利用摸鱼,打开小说,可实行完美摸鱼,实时保存进度用PYQT5 Mock一个摸鱼
- 本文主要跟大家分享在类unix操作系统下supervisor的使用以及一些关于进程的知识一、问题背景1、背景如何才能让一个进程摆脱终端,获得
- Django开发过程中如果数据库变动过多导致migrations的文件越来越多,管理起来很不方便, 幸运的是Django提供了一种方式可以是
- 为了查找这些存储过程,你可以花时间在互联网搜索,查看一些你还未知道的存储过程,也许在一两个小时您可能会发现你想要...也许你很幸运的找到,其
- 前言使用强类型变量常常需要从一种类型向另一种类型转换,通常使用ToString或ParseInt可以来实现一些简单的转换,但是有时候需要像.
- 1. 介绍BoltBoltDB是纯Go语言实现的持久化解决方案,保存数据至内存映射文件。称之为持久化解决方案不是数据库,因为数据库这个词有很
- 下面列出Python正则表达式的几种匹配用法:1.测试正则表达式是否匹配字符串的全部或部分regex=ur"" #正则表
- 结构图:为什么?var data [][]intfor _, rangeSlice := range [][]int{{1}, {2}, {
- 问题详情:使用pip install pyecharts 安装的是最新版,本人默认回车后安装1.1.0版本,出现如图问题:解决方法:(推荐第
- 本文实例分析了Python字符串和文件操作常用函数。分享给大家供大家参考。具体如下:# -*- coding: UTF-8 -*-'
- 电影之类的长视频好像都用m3u8格式了,这就导致了多线程下载视频的意义不是很大,都是短视频,线不线程就没什么意义了嘛。我们知道,m3u8的链
- 1. 前言熟悉 Django 的朋友应该知道,我们可以通过「 inspectdb 」命令将数据库表反向生成 Model 并写入到文件中去比如
- 代码很简洁,功能很实用,这里就不多废话了,直接奉上:<?php/** * 获取客户端IP * @param&nbs
- python调用mysql数据库通常通过mysqldb模块,简单说下如何调用1.安装驱动目前有两个MySQL的驱动,我们可以选择其中一个进行
- 一: 触发器是一种特殊的存储过程﹐它不能被显式地调用﹐而是在往表中插入记录﹑更新记录或者删除记录时被自动地激活。所以触发器可以用来实现对表实
- 在网络浏览器软件中,可以Internet Explorer (IE)现在是一种标准的软件。可以看到,运行不同版本的Windows操作系统(和
- 前文复习:openCV第一篇openCV第二篇一、Canny边缘检测该边缘检测法步骤如下:使用高斯滤波器,以平滑图像,滤除噪声。计算图像中每
- 导语嘿!大家好,我是木木子!今天给大家带来一个好玩儿的Python小程序,希望大家喜欢,记得点点关注啦~有没有什么内容形式,比小视频更小,比