这种方法读取的文本内容,每行文本末尾都会带一个‘\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方法从文件中读取整行,包括换行符‘\n‘。
换行符(\n)留在字符串的末尾,如果文件不以换行符结尾,则在文件的最后一行省略,这使得返回值明确无误。
如果 f.readline() 返回一个空的字符串,则表示已经到达了文件末尾,而空行使用 ‘\n‘ 表示,该字符串只包含一个换行符。
with open(‘a.txt‘) as f:
while True:
print(f.readline())
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]#筛选条件
取出单元素张量的元素值并返回该值,保持原元素类型不变。,即:原张量元素为整形,则返回整形,原张量元素为浮点型则返回浮点型,etc.
是整个把pcap包读进内存,并且读完文件不会自动关闭文件,需要手动关闭
import scapy
from scapy.all import *
packets =rdpcap(‘C:/Users/XXX\\Desktop\\test.pcap‘)
for packet in packets:
if(packet.haslayer(‘IP‘)):
...
这个方法一次性读一个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