如何学python

第十六课 基础文件操作

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

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

两种主要I/O操作

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

注意

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

手动文件I/O操作

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

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

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

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

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

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

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

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

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

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

自动文件I/O操作

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

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

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

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

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

总结

今天学了些挺有用的东西,希望大家都能看得懂。不久之后我们会学习一些更复杂的io操作。

原文发布于微信公众号 - 玄魂工作室(xuanhun521)

原文发表时间:2016-08-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏主机笔记

flashfxp使用sftp协议给linux服务器传输文件

在使用虚拟主机的时候我们一般都用ftp把网站的文件传输到服务器上,但是在使用服务器的时候默认是没有安装ftp软件的,尤其是linux系统命令行的界面对新人来说更...

457100
来自专栏阮一峰的网络日志

互联网协议入门(二)

上一篇文章分析了互联网的总体构思,从下至上,每一层协议的设计思想。 这是从设计者的角度看问题,今天我想切换到用户的角度,看看用户是如何从上至下,与这些协议互动的...

37480
来自专栏linux运维学习

linux学习第三十三篇:rsync工具介绍,rsync常用选项,rsync通过ssh同步

telnet命令是检测一个端口是否通的命令。格式:telnet ip 端口(安装包 yum install -y telnet) rsync工具介绍 rsyn...

21850
来自专栏xingoo, 一个梦想做发明家的程序员

【web必知必会】——图解HTTP(上)

  本篇总结关于http的相关知识,主要内容参考如下导图: ?   主要讲解的内容有:   1 URL与URI的区别。   2 请求报文与相应报文的内容。   ...

21390
来自专栏上善若水

016 进程内缓存和进程外缓存的对比

在java应用中,对于访问频率比较高,又不怎么变化的数据,常用的解决方案是把这些数据加入缓存。相比DB,缓存的读取效率快好不少。java应用缓存一般分两种,一是...

24230
来自专栏维C果糖

详述 IntelliJ IDEA 中恢复代码的方法

在咱们正常开发项目的时候,难免遇到在开发过程中由于某种原因,想要将代码恢复到前一版本的情景。特别是在咱们删除了某些代码,想要恢复之前删除的代码的时候,了解这个在...

22580
来自专栏coder修行路

Python爬虫番外篇之Cookie和Session

关于cookie和session估计很多程序员面试的时候都会被问到,这两个概念在写web以及爬虫中都会涉及,并且两者可能很多人直接回答也不好说的特别清楚,所以整...

24470
来自专栏Java技术分享圈

杨老师课堂之JavaEE三大框架Struts2入门第一课

...

7330
来自专栏地方网络工作室的专栏

Shell 命令行批量处理图片文件名

Shell 命令行批量处理图片文件名 从网上下载了一堆图片,有的是*.jpg的,有的是*.jpeg的。并且文件名有长有短,很是糟心。因此,我想把这些文件给全部整...

336100
来自专栏Aloys的开发之路

屏幕输出VS文件输出

问题1:我们在编写程序时经常需要数一些数据到屏幕,来查看我们的结果是否正确,虽然直接输出到屏幕,查看起来呢很方便,但当数据量很大时,需要耗费大量的时间。于是我...

192100

扫码关注云+社区

领取腾讯云代金券