Python安全攻防——基础(文件&异常处理)

🚀write in front🚀
🔎大家好,我是翻斗花园牛爷爷★。希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎
🆔本文由 翻斗花园牛爷爷★ 原创 CSDN首发🐒 如需转载还请通知⚠
📝个人主页:翻斗花园牛爷爷★—CSDN博客
🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​
📣系列专栏:翻斗花园牛爷爷★的系列专栏——CSDN博客
✉️我们并非登上我们所选择的舞台,演出并非我们所选择的剧本

目录

文件

1.文件处理

2.创建文件对象

3.文件的读写

4.关闭文件对象

异常处理

1.try…except…结构

2.try…except…else…结构

3.try…except…finally…结构


文件

1.文件处理

文件就像一个仓库一样可以存储各式各样的数据类型供我们使用。根据文件的用途可以分为,数据库文件,图像文件,音频,视频,文本文件等。本节主要以文本文件的处理操作为例。文本文件中存储的是常规字符串,由文本行组成,每行结尾通常由换行符“\n”结尾。

对于文本文件来说,通常的操作流程为:

  1. 打开文件并创建对象;
  2. 对该文件内容进行读取、写入、删除、修改等操作;
  3. 关闭并保存文件三个步骤。

2.创建文件对象

        在python中内置了文件对象,通过open()函数就可以制定模式打开指定文件并创建文件对象,该函数的详细参数如下:
   

open(filename, mode=’r’,encoding=[])

filename就代表着要创建或者要打开的文件名称,如果该文件不存在当前目录,则需要明确指出绝对路径。

mode指定打开文件后的处理方式,其中包括:读模式、写模式、追加模式、二进制模式、文本模式、读写模式等。

encoding指定对文本进行编码和解码的方式。默认文本文件中的字符的编写格式为gbk。

encoding=gbk并且print输出的为中文的时候,另存为文件的编码格式为ANSI,默认的为UTF-8

file=open('a.txt','r')
print(file.readlines())
file.close()#关闭资源

3.文件的读写

对于一名开发人员,有时需要加载文本中的某行或者全部内容,此时就需用到文本的读取操作:
r:读模式(默认模式可以省略),如果文件不存在则抛出异常;+:读,写模式(可与其他模式组合使用)

r:以只读模式打开文件,文件的指针将会放在文件的开头

w:以只写模式打开文件,如果文件不存在则创建,如果文件存在,则覆盖原有内容,文件指针在文件的开头

a:以追加模式打开文件,如果文件不存在则创建,文件指针在文件开头,如果文件存在,则在文件末尾,追加内容,文件指针在原文件末尾。

b:以二进制方式打开文件,不能单独使用,需要与共它模式一起使用,rb,或者wb

+:以读写方式打开文件,不能单独使用,需要与其它模式一起使用,a+

file=open('a.txt','r')
print(file.readlines())
file.close()#关团资源

file=open('b.txt','w')
file.write('helloworld')#建一个新的txt文件,内容为helloworld
file.close()

file=open( 'b.txt','a')#在b.txt的基础上追增内容
file.write('python')
file.close()

lv_file=open( 'logo.png','rb')#读入
target_file=open('copylogo.png','wb')#写入,写是w,因为是二进制文件,所以加上b
target_file.write(src-file.read())#读取内容
target_file.close()
lv_file.close()

 而对于这些文件对象,还有很多的常用方法:

read([size]):从文件中读取size个字节或字符的内容返回。若省略[size],则读取到文件末尾,即一次读取文件所有内容

readline():从文本文件中读取一行内容

readlines():把文本文件中每一行都作为独立的字符串对象,并将这些对象放入列表返回

write(str):将字符串str内容写入文件

writelines(s_list):将字符串列表s_list写入文本文件,不添加换行符

seek(offset[, whence]):

把文件指针移动到新的位置,offset表示相对于whence的位置:offset:为正往结束方向移动,为负往开始方向移动
whence不同的值代表不同含义:
0:从文件头开始计算(默认值)1:从当前位置开始计算
2:从文件尾开始计算

tell():返回文件指针的当前位置

flush():把缓冲区的内容写入文件,但不关闭文件

close():把缓冲区的内容写入文件,同时关闭文件,释放文件对象相关资源

对于这些指令,大家要了解他们的用途,无论是在学习pwn二进制还是web渗透,编写exp时都或多或少要用到这些。

这里演示一下flush()和close()

file=open('d.txt','a')
file.write('hello')
file.flush()#将缓冲区的全部存入文件中
file.write('hello')
file.close()



结果:

 同时,还有两个要说一下,大家要了解一波

readable(): 测试文件是否可读;

writable(s) : 测试文件是否可写;

4.关闭文件对象

当对文件内容操作完以后,一定要关闭文件对象,file.close(),这样才能保证所做的任何修改都确实保存到了文件中。

而对于这个操作,小伙伴们说总是忘记写。没关系,这个时候就要用到我们的with语句了,也即(上下文管理器)

with open('logo.png','rb') as file:

关键字with能够自动管理资源,总能保证文件的正确关闭并且可以在代码执行结束后自动还原进入改代码块时的现场 

with open('a.txt','r') as file:
    print(file.read())#不需要再使用close函数进行关闭资源

 

结果:

异常处理

1.try…except…结构

在python异常处理结构中try…except…结构使用最为频繁,其中try子句中代码块为可能引发异常的语句,except子句用来捕获相应的异常。也可以解释为,当try子句代码块执行异常并且被except子句捕获,则执行except子句的代码块。

举个例子:

try:
    a=int(input('请输入一个整数'))
    b=int(input('请输入一个整数'))
    c=a/b
except ZeroDivisionError:
    print('除数不能为0')
except ValueError:
    print('应输入数字串')
print('程序结束')

 会给出相应的提示,而不是报错

2.try…except…else…结构

try…except…else…;如果try代码的子句出现了异常且该异常被except所捕获则可以执行相应的异常处理代码,此时就不会执行else中的子句;如果try中的代码没有抛出异常,则执行执行else子句代码块。

try:
    a=int(input('请输入一个整数'))
    b=int(input('请输入一个整数'))
    c=a/b
except ZeroDivisionError:
    print('除数不能为0')
except ValueError:
    print('应输入数字串')
else:
    print(c)

大家应该都能理解这个else是什么意思了。就是相当于多给了你一个选择。

3.try…except…finally…结构

在try…except…finally…结构中。无论try子代码块是否正常执行,finally子句中的代码块总是会得到执行。在日常开发过程中,通常用来做清理工作,用来释放try子句中申请的资源。

try:
    a=int(input('请输入一个整数'))
    b=int(input('请输入一个整数'))
    c=a/b
except ZeroDivisionError:
    print('除数不能为0')
except ValueError:
    print('应输入数字串')
else:
    print(c)
finally:
    print('程序结束')

经过我对这些模块的简单介绍,大家应该都有了一些相应的了解了。那么在未来编写自动化脚本时,我们必须要拥有扎实的基本功才行。

 创作不易,希望大佬们以及未来的大佬们给个三连再走吧

 创作不易,希望大佬们以及未来的大佬们给个三连再走吧

 创作不易,希望大佬们以及未来的大佬们给个三连再走吧

同时,也希望各位大佬能够指正文章的错误,(^_^)∠※

当然也要提醒各位小伙伴们,只有自己打出来,才能真正的掌握哦。😁😁😁

  • 22
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 11
    评论
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

翻斗花园牛爷爷★

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值