python只读方式打开文件可以不close吗,python编程中文件的打开、读写和关闭,读写中文件的指针...

在编程中,比较重要的一个部分就是文件的读写。在计算机系统中,我们需要读取硬盘上的文件,我们才有这么丰富甚至海量的资料可以学习。

在我们之前的例子中,在我们运行python程序(代码)时,我们可以得到我们想要的结果。但是,一旦我们关闭了这个程序,所有资料都没有了,再也找不到了。

计算机上文件的读写,非常有必要。

b89aa7f8e477f1a4790e87d0393026ad.png

在读写文件之前,我们先要学会打开和关闭文件。

文件的打开及关闭

先在python程序所在文件夹新建一个文本文件。

具体方式可以参考既往文章。pycharm的基本操作,创建项目,新建py文件,编写代码及保存

以下是我的操作界面。

cb6c8347f060bf5755d59503fa1fe689.png

在python文件(writing.py)所在文件夹,新建了文本文件。

我写好了代码,运行一下看看。

030708dc8f4e7573326e369c5017470c.png

第一行代码是正常运行的,文件正常打开。通过open()打开文件,括号内部必须要有文件名,后面“r”是文件的打开方式,只读。

程序出错是第二行的问题。f.read()无法运行。

最后一行代码是关闭文件,f 就是我们已经打开的文件,f.close()关闭文件。

注意,要记得关闭文件。

编码方式

我考虑是文件编码的问题。

说一下什么是编码吧。我们说汉语,使用汉语词典,我们可以查到我们说出来的话语的意思。但用汉语词典,你查不了一句英语的意思,即用汉语的编码方式无法解析英语。

查看了一下pycharm的设置。

c2232517a3e85c087f38660db062b7ac.png

果然,python整体默认编码方式是UTF-8,然后项目内默认编码方式是GBK。尝试把项目内编码方式改成UTF-8看看。

结果失望了,还是不行。因为pycharm界面是英文,有点复杂,下面还有一个新建文件的默认设置,也可能刚才新建文件时已经默认了一些编码设置。这个方式太复杂,放弃了。

在python代码中声明编码方式

8411e390a8c135c5c0a9c420c51ace0d.png

在首行声明编码方式,首行加入代码:

# -*- coding=utf-8 -*-

在文件打开处也声明文件的编码方式。用逗号分隔后加入代码:

encoding='utf-8'

运行结果如上。

因为我们已经知道python本身默认UTF-8编码,只是内部文件默认的编码一样而已,所以我们也可以只在打开文件时声明编码方式。如下

3eb77312f50c8945f3f932e698a0d1f1.png

文件的读写

上图已经有读取文件的部分,即f.read(),读取文件内容。

文件打开时,我们在第2个参数处设置了文件的打开方式,第一次我们用的人“r”,代表文件只读不写。上图“r+”表示打开文件进行读写。同样的还有“w”表示只能写入(已存在的同名文件会被删除),还有 'a' 表示打开文件以追加内容;任何写入的数据会自动添加到文件的末尾。

这个打开模式的参数是可选的;省略时默认为 'r'。

我们来读写一次。

写好代码后,我运行了几次,总觉得有点问题,然后修改了几次,最后跳出下面的情况。

8f7dedbcded4a1e7b412dce800dfcd24.png

如红色眉头部分提示,文件以错误的编码方式(UTF-8)载入!

即,我们在新建的时候不是UTF-8编码的文件。哎,心累。

因为我是在pycharm环境内新建TXT文本的,现在把这个文本删了,通过桌面新建一个同名文件,再移动到对应文件夹,试试?

1ed53080145f5ae411c4a2cf16579f80.png

嗯,暂时是可以运行的,大体没毛病。

正常打开文本文件,正常读取。问题来了,第3和第4行代码没有体现出来。

第3行代码就是文件的写操作,在文件“指针”处进行写入操作。\n是转义字符,它代表换行符。

指针

这里需要加入一个指针的概念。一般在C语言会提到指针,python这里类似的是索引。我们读书,会说读到了第2段的第1句的第3个字,指针就是一个位置,指示当前操作的位置。索引也是。

经第2和第3行代码的文件操作,现在指针在哪里?已经指到文件的最末端了。所以第4行代码的f.read()操作,就是从文末进行读取文本文件。得到一个空行。

我们可以把文件“指针”(索引)重新定位。

0c9b7a61e0efbc76207850818b869b93.png

如图第3行进行写入操作后,通过f.seek(0),来把指针重新指向索引0。

一切如我所愿。因为在不断写入一行文本文字,所以越运行,文本行数越多。

python文件的读写,我也尽力了,大体就这个过程,你学废了吗?

举报/反馈

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值