如何学python 第十九课 文件操作

admin 2022年4月19日22:31:18安全开发评论7 views2797字阅读9分19秒阅读模式
点击标题下「蓝色微信名」可快速关注


作者:玄魂工作室-李三思


今天我们来说说文件操作。文件操作在程序编写里有着举足轻重的作用。文件操作,主要包含文件的输入和输出。学会了文件操作,就可以写出更符合实际需求的脚本。

我会先介绍两种主要的I/O模式,然后介绍一下文件的手动opening和closing。最后,介绍更加自动化的操作方式。


两种主要I/O操作

有好多方式进行文件I/O操作。不过,最常使用的还是其中的两种。一种是读文件(‘r’),另一种是写文件(‘w’)。这两个操作的含义就是字面意思,从文件读数据和向文件写数据。

注意

标准的写操作会把文件覆盖(这意味着原有的文件内容会丢失),我们在后面的文章里会介绍如何做到这一点。

手动文件I/O操作

当我们进行文件I/O操作的时候,最好别用这种方式进行文件操作。举例来说,错误的关闭文件可能会导致一些严重的错误。虽然这不是推荐的操作,但是却很适合用来入门。

我们首先演示写文件。(此演示在linux下进行)首先创建一个叫做file的文件,然后在里面写上(只是用文本编辑器打开和写入)”Hello,Null Byte!”.

如何学python 第十九课 文件操作

现在我们有了个文件。在进行文件写操作的时候,首先要在python里打开这个文件。这个过程会建立一个对象,所以我们需要用一个变量把这个对象存进去。在例子中,我们用变量‘file’来存贮这个对象。

当我们打开文件的时候,需要使用open()函数,并对传入文件路径和要进行什么样的文件操作。看例子:

如何学python 第十九课 文件操作

我们此时已经通过只读方式打开了文件。现在来通过打印变量file的内容来看看到底读到了什么:

如何学python 第十九课 文件操作

我们可以看到除了读到文件内容之外,还有一行空白。这其实是换行符n。现在我们成功的读到了文件,一定一定要记得把文件关上。如果不关闭文件,就会导致一些错误,文件也可能会被损坏。我们可以用.close()方法来关闭文件对象。

如何学python 第十九课 文件操作

现在,我们已经成功的打开、读、关闭了文件。下面来试试写文件。

写文件只要把open()的第二个参数换成’w’就可以了。向文件‘file’中写入”Hello,world!n”:

如何学python 第十九课 文件操作

记得手动加上n,然后是文件的关闭操作。现在再看看文件里的内容:

如何学python 第十九课 文件操作

好了,这就是手动操作文件的全部内容。

自动文件I/O操作

‘自动’,意味着不再需要手动打开或者关闭文件。我们可以用with关键字和as关键字来打开和关闭文件。这么做的格式是

with open(‘文件路径’,‘操作方式’) as 存储文件的变量名

如何学python 第十九课 文件操作

你可能注意到提示符的样子从>>>变成了…  这是因为使用with和as关键字的时候,所有的io操作都必须在with/as的body部分里。

如何学python 第十九课 文件操作

这样就不用手动关闭文件了。下面演示一下写操作:

如何学python 第十九课 文件操作

现在来看看文件写进去了没:

如何学python 第十九课 文件操作

下面继续open函数的其他参数。不同的参数会以不同的方式操作文件。如果你的学习能力够强,就应该在看到这个函数的第一时间去了解它的各个参数的含义,传入不同参数的作用、返回值等等情况。了解了这些基本信息,使用起来也就没什么问题了。在上一篇介绍文件操作的文章里,我们给出了很多操作文件的方式,但是没有给出具体的解释,只是让有兴趣的同学自己试试看。这节来详细介绍一下上次没介绍的几种文件操作模式。

r+方式:这种方式既可以读文件又可以写文件,但是是分开单独进行的。

rb方式:这种方式以二进制方式读文件。

wb方式:这种方式以二进制方式写文件。

在演示文件操作之前,需要先创建一个文件:

如何学python 第十九课 文件操作

额外提一嘴,这里的环境依旧是kali。我们先用touch命令创建了一个叫做test的文件,然后有用cat 命令向文件写入了一些内容。cat << EOF > test这行命令的含义是,打开test文件,向test文件内写入接下来你输入的内容(可以是多行),并在遇到’EOF’这个东西的时候保存内容并关闭test文件。注意,这个’EOF’可以是其他任何的东西,这里的eof虽然也意味着end of file,却并不是我们传统意义上的那个真正的文件结束标记。另外,这个标记不会被保存到文件中。好了,书归正传,继续说python下的文件操作方式。

r+模式

r+模式也可以叫做’拓展读模式’。我们就用之前说的as with的方法来演示。

如何学python 第十九课 文件操作

这里用到了一个新的方法,readlines().read,读。lines,行,而且是个复数形式,多行。其实从字面意思来看就可以知道这是什么意思。readlines可以按行读取文件,并且以行为单位,返回一个list对象。

print一下通过读文件读到的内容:

如何学python 第十九课 文件操作

再看看写文件是不是写进去了:

如何学python 第十九课 文件操作

二进制读/写模式

以二进制的方式读取文件和写入文件,在日常编程中 并不是很常见。然而,在某些特殊情况下(比如加密/解密等),二进制读写是非常有用的。

为了举例子,我们先创建一个目标文件。事实上,任意一个其他的文件也可以被拿来做实验,无论你的系统是什么。这里,我简单的创建一个可执行文件,然后用这个可执行文件做实验:

如何学python 第十九课 文件操作

由于这是一个python文章,所以关于文件创建过程,我就不多说什么了。

然后,使用rb模式读文件->把读到的东西放进test变量里->输出test变量:

如何学python 第十九课 文件操作

执行print之后,我们会发现输出了一大堆莫名其妙根本看不懂的东西。没关系,我们不懂无所谓,系统懂就行了。。。

输出的内容:

如何学python 第十九课 文件操作

我们唯一能看懂的基本上就是那句Hello world了。

也许你觉得这个东西没有卵用,其实还是有点用的。那我举个例子好了。不知道大家还记不记得许多年前有个工具叫灰鸽子,当时江湖上出现了各种各样xxx专版灰鸽子,看起来屌屌的,好像真的是重新开发版一样。

然而并不是这样的。

事实上相当多的改版灰鸽子都是用类似的方式,查字段,改字段,然后就没了。甚至连重新编译都没有。。。。

当然了,除了用来装逼,它还有很多别的用处。这节课我们姑且讲基础,不说太深入。但是千万别觉得没有卵用——把枪交给一个不会开枪的人,犹如一堆废铁。能怪枪没有卵用吗?并不能。

好了,开始说二进制写。

使用二进制写文件->打开新创建的文件test2->把刚才读出来的test写到test2里。

如何学python 第十九课 文件操作

改权限,执行(因为是linux下所以需要改一下权限):

如何学python 第十九课 文件操作

可以看到,test2和test完全一样。

 总结

今天说的这几样里,平时使用频率最高的就是r+模式了。在进行大量的读写文件操作的时候,这个模式相当的有用。后面那两种虽然不常用,但却也有其无可替代的地方。当然,更可能的情况是,当你在别人写的代码里看到了这个东西,不至于太抓瞎。

问题讨论请加qq群:Hacking 1群):303242737   Hacking 2群):147098303



微信扫码关注订阅号,回复“Python”查看系列文章。


如何学python 第十九课 文件操作

玄魂工作室,精彩不断




本周的“每周一书”赠书活动,正在进行中哦,点击下方链接参与。

每周一书-《Bootstrap基础教程》




原文始发于微信公众号(玄魂工作室):如何学python 第十九课 文件操作

特别标注: 本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年4月19日22:31:18
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                  如何学python 第十九课 文件操作 http://cn-sec.com/archives/783697.html

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: