首页 > 编程语言 > 详细

Python读文件:npy/npz/pcap包/大规模pcap包等

时间:2021-06-30 18:27:32      阅读:22      评论:0      收藏:0      [点我收藏+]

readlines()

这种方法读取的文本内容,每行文本末尾都会带一个‘\n‘换行符 (可以使用L.rstrip(‘\n‘)去掉换行符)

首先需要open函数打开文件 指定路径 以及mode

mode常用的模式:

r:表示文件只能读取

w:表示文件只能写入

a:表示打开文件,在原有内容的基础上追加内容,在末尾写入

w+:表示可以对文件进行读写双重操作

f = open(‘/home/karma/Documents/liebiao.txt‘,‘r‘)
#返回一个列表
list = f.readlines()
list =list[:100]
for line in list:
    line = line.split(‘\n‘)[0]
    print(type(line))
f.close()

open方法有个缺点,就是每次打开文件之后 需要用close方法关闭,因此有更好的with方法:

with open(‘/home/karma/Documents/liebiao.txt‘,‘r‘) as f:
    #f为一个列表
    list = f.readlines()
    list =list[:100]
    for line in list:
        line = line.split(‘\n‘)[0]
        print(type(line))

readline()方法

readline方法从文件中读取整行,包括换行符‘\n‘。

换行符(\n)留在字符串的末尾,如果文件不以换行符结尾,则在文件的最后一行省略,这使得返回值明确无误。

如果 f.readline() 返回一个空的字符串,则表示已经到达了文件末尾,而空行使用 ‘\n‘ 表示,该字符串只包含一个换行符。

with  open(‘a.txt‘) as f:
    while True:
        print(f.readline())

读npz / npy文件

import numpy as np
a=np.load("D:\\code\\test\\extract_120_10.npy",allow_pickle=True).item()#返回dict
X= np.array(a[‘feature‘])
y=np.array(a[‘label‘])
y=y[y<101]#筛选条件

其中item()作用

取出单元素张量的元素值并返回该值,保持原元素类型不变。,即:原张量元素为整形,则返回整形,原张量元素为浮点型则返回浮点型,etc.

读pcap包

方法1 rdpcap

是整个把pcap包读进内存,并且读完文件不会自动关闭文件,需要手动关闭

import scapy 
from scapy.all import *

packets =rdpcap(‘C:/Users/XXX\\Desktop\\test.pcap‘)

for packet in packets:
    if(packet.haslayer(‘IP‘)):
        ...

方法2:PcapReader

这个方法一次性读一个packet,不用把整个pcap包读进内存(比如有pcap包大小达到几个GB),并且可以实现访问完pcap包关闭的功能

import scapy
from scapy.all import *
from scapy.utils import PcapReader
import time
import constants
import os

data_path =‘C:\\Users\\XXX\\Desktop\\Data‘#文件夹路径
files = os.listdir(data_path)#读入
num_files = len(files)#统计文件夹中文件数目

try:
    for i in range(num_files):
        s1 = PcapReader(‘C:/Users/XXX\\Desktop\\Data\\test‘+str(i+1)+‘.pcap‘)
        while True:
            packet = s1.read_packet()
            if packet is None:#需要注意的是 这里修改scapy包的源码了,把raise EOFError改成了 return None
                break
            print(packet.time)
        s1.close()
        time.sleep(5)
        print("等几秒AAAAAAAA")
except :
    print("发生异常")

Python读文件:npy/npz/pcap包/大规模pcap包等

原文:https://www.cnblogs.com/YanShaoDian/p/14954813.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!