前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >怎样学Python之第十九课 高级文件输入和输出

怎样学Python之第十九课 高级文件输入和输出

作者头像
用户1631416
发布2018-04-12 13:53:23
6700
发布2018-04-12 13:53:23
举报
文章被收录于专栏:玄魂工作室

欢迎回来!如果您还记得以前的几次培训课程,我们介绍了基本的文件I/O。 这是使我们的脚本适用于现实生活场景中的一个非常重要的步骤,今天我们将要深入这些概念。

我们今天将介绍三种I/O模式,让我们花点时间将其展示出来:

  • r+模式:这意味着该文件将为阅读和写作而打开,这通常是单独完成的。
  • rb 模式:这表示读取二进制文件。 这种模式可以让我们轻松读取二进制文件。
  • wb 模式:这表示写入二进制文件,它允许我们轻松地写入二进制文件。

现在我们已经通过了我们将要涉及的模式的简要介绍,让我们来看看它,并从r+ 模式开始!

使用高级Reading模式

首先,由于r+模式不是首字母缩略词,所以我把它称为高级Reading模式,我将在本次培训课程的剩余部分中提到这一点。

那么,如果我们要执行一些文件I/O,我们需要一个文件。让我们继续使用touchcat命令来创建我们的文件并添加一些文本:

~# touch test~# cat testLine 1Line 2Line 3

现在我们有一个文件,让我们启动我们可信的Python环境并做一些I/O操作!

如果您从前面的文件I/O课程中记得,我们可以通过打开别名下的文件来自动执行打开和关闭过程。

这是通过关键字with一个标准的打开函数,然后通过关键字as作为别名(通常命名为文件)进行处理的。 让我们来看看这个语法,我们将读取我们的文件,并写一个新的行:

>>> with open(‘test’, ‘r+’) as fd:... lines = fd.readlines()... fd.write(‘Line 4\n’)...

现在,我们来仔细分析一下,我们已经使用了一种新的方法,fd.readlines()

该方法逐行读取文件,并将每行都生成一个列表作为自己的元素,然后我们调用标准的fd.write()方法将第四行添加到文件中。

现在,让我们继续并打印我们的新列表:

>>> lines[‘Line 1\n’, ‘Line 2\n’, ’Line 3\n’]

但是,我们必须记住,自从Python逐行读取之后,我们的文件已经在我们写入之前就被读取了。所以我们的文件内容与我们列表的内容不匹配,让我们继续前进并捕获我们的文件以查看其差异:

#~ cat testLine 1Line 2Line 3Line 4

我们写进去了!我们可以使用高级Reading(r+)模式同时读取和写入文件。现在,我们来看看rbwb模式!

使用读/写的二进制模式

正如你可以通过上面的标题所说的,rbwb代表读二进制和写二进制。这使得读取和写入二进制文件变得容易。

如果我们要读取二进制文件,我们需要一个文件来读取。我们将编译一个简单的C程序来打印[Hello,World!]到终端,让我们现在创建我们的文件:

~# touch test.c~# cat test.c#include <stdio.h> int main(void){printf(“Hello, World!\n”);return 0;}~# gcc test.c -o test~# ./testHello, World!

我不会解释这是因为这是一个Python课程,而不是C课程。

既然我们有我们的二进制文件,测试,我们可以使用我们的二进制读/写模式。 让我们回到我们的Python shell并用rb模式打开我们的二进制文件:

>>> with open(‘test’, ‘rb’) as file:... tfile = file.read()...>>> print tfile

现在,当我们执行这个打印语句时,大量的乱码将被打印到屏幕上。 我们无法阅读,但我们的系统知道这意味着什么。让我们执行此打印语句以查看二进制文件:

图19.1

图19.2

我们唯一可以看到的是文字[Hello,World!],其他的都只是无意义的,这是打印二进制文件内容的结果。

现在我们将二进制文件的内容存储在变量下,让我们创建一个新文件并将二进制内容写入它。

如果我们试图打开一个在Reading模式下不存在的文件,该文件将在打开的函数中指定的地方创建。

让我们打开一个名为test2的新文件,并将它的二进制输出写入它:

>>> with open(‘test2’, ‘wb’) as file2:... file.write(tfile)...>>>

现在我们已经将这个二进制代码写入了一个文件,我们可以像原来那样真正执行这个文件。我们来演示这个并执行我们的新文件:

~# ./test2Hello, World!

成功了!我们能够有效地复制我们的二进制文件并执行它,这些模式并不是经常使用,但是如果您遇到这些模式,这些模式却会很有用。

总结

我们在这里讲解了很多,所以我希望你能很好的理解我们所讲解的内容。 高级阅读模式可用于执行大量文件的I/O操作。老实说,二进制模式不会经常使用,但如果它们存在,我们就会想知道怎么使用!

接下来的文章对于这个系列将非常重要,所以你不会想错过它的,我会在下一篇文章中看到你们!

练习

使用今天所学的Python知识,把Linux /usr/bin/ 目录下的所有文件拼接成一个文件,并保存在本地。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-03-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 玄魂工作室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档