python针对文本的操作

Python文件的处理

1: 我们可以把文件想象成一个仓库;可以供我们操作使用
针对文件的操作流程为:
	打开文件并且创建对象;
	对该文件内容进行 读取 写入 删除 修改等操作
	关闭并且保存
2: 常用操作函数
 open()函数打开文件并创建对象
	参数:
	路径信息(如果不在当前路径下;需要使用绝对路径进行定位)	
	打开方式: 
		r 默认读模式<如果文件不存在则抛出异常>
		w 写入模式;使用该模式会清空文本中原有的内容 <如果该文件不存在则会创建>
		x 它也是写入模式;如果该文件存在则会抛出异常
		a 它是对文件进行追加;不会覆盖文件的原始内容
	encoding参数指定该文本的编码格式

	colse()使用该函数进行关闭我们创建的文件对象
2.1: 也可以使用with模式进行操作文件;这样我们就不会忘记使用close函数关闭文件了
with open('python.txt','r',encoding='utf8') as  filename:
      print(filename.read())
print(filename.read())  
# 抛出异常信息  ValueError: I/O operation on closed file.  这是因为我们调用的文件对象已经关闭了
3: 测试文件是否可读:
readable() 测试创建的文件对象是否可读;它的返回值是False 和 true我们可以利用这个函数进行判断该文件是否可读
wireable()测试文件时候可写
filename = open('python.txt','r',encoding='utf8')
aa = filename.readable()
print(aa)  # 输出打印true 证明这个文件是可读的
4: 针对文件对象进行操作的函数
read()函数读文件中所有的内容
readline()读取文件一行的内容也可以 读取该行的指定参数
readlines()读取文件中的内容添加到列表中去;换行用\n代替
4.1: 也是可以使用for循环进行输出文件中的内容
filename = open('python.txt','r',encoding='utf8')
print(filename.readline(4))
filename.close()   
#  如果我们不关闭该对象的话;使用readline()读取的4个长度是不会被读取的
filename = open('python.txt','r')
for line in filename:
   print(line)
5: 异常处理
如何处理异常:<通过异常处理可以发现错误所在>
异常处理结构: try except
另一种处理异常结构:
	try: except: else:   <如果try抛出异常则执行except代码;反之执行else中的代码>
	try: except: finally:  <finally中的代码是必执行的>

例如上面调用的with操作文件报异常我们就可以使用它进行处理异常进行回显

try:
   with open('python.txt','r',encoding='utf8') as  filename:
      print(filename.read())
   print(filename.read()) 
   # 抛出异常信息  ValueError: I/O operation on closed file. 
except:
   print('文件对象已经被关闭')  # 输出文件对象已经被关闭
6:小测试
在特定的文件内进行提取特定的一段内容:
	例如在当前目录下存在一个txt文件;该文件中的内容为:
		alert any any -> any (msg:"this is a test";flow:"established")
	在文本中具有多行类似此内容的数据<msg内容不同>;通过python我们将msg中的内容提取出来
import sys
import os
dirs = ''
msg = []
list = os.listdir('./')  # 返回的当前目录下面所有文件和目录的名字列表
# print(list)
for i in range(0,len(list)):
	dirs = list[i]
	if '.txt' in  dirs:
		with open(dirs,'r',encoding='utf8') as file:
			line = file.readlines()
			# print(line)
			for i in range(0,len(line)):
				if 'alert' and 'msg' in line[i]:
					msgnum = line[i].index('msg:"')
					msgnum1 = line[i].index('";flow:')
					msg.append(line[i][msgnum+5:msgnum1])
with open('Msg.txt','w',encoding='utf8') as msgwrite:
	for i in range(0,len(msg)):
		msgwrite.write(msg[i] + '\n')
	print('导入成功')
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值