在编程中,比较重要的一个部分就是文件的读写。在计算机系统中,我们需要读取硬盘上的文件,我们才有这么丰富甚至海量的资料可以学习。
在我们之前的例子中,在我们运行python程序(代码)时,我们可以得到我们想要的结果。但是,一旦我们关闭了这个程序,所有资料都没有了,再也找不到了。
计算机上文件的读写,非常有必要。
在读写文件之前,我们先要学会打开和关闭文件。
文件的打开及关闭
先在python程序所在文件夹新建一个文本文件。
具体方式可以参考既往文章。pycharm的基本操作,创建项目,新建py文件,编写代码及保存
以下是我的操作界面。
在python文件(writing.py)所在文件夹,新建了文本文件。
我写好了代码,运行一下看看。
第一行代码是正常运行的,文件正常打开。通过open()打开文件,括号内部必须要有文件名,后面“r”是文件的打开方式,只读。
程序出错是第二行的问题。f.read()无法运行。
最后一行代码是关闭文件,f 就是我们已经打开的文件,f.close()关闭文件。
注意,要记得关闭文件。
编码方式
我考虑是文件编码的问题。
说一下什么是编码吧。我们说汉语,使用汉语词典,我们可以查到我们说出来的话语的意思。但用汉语词典,你查不了一句英语的意思,即用汉语的编码方式无法解析英语。
查看了一下pycharm的设置。
果然,python整体默认编码方式是UTF-8,然后项目内默认编码方式是GBK。尝试把项目内编码方式改成UTF-8看看。
结果失望了,还是不行。因为pycharm界面是英文,有点复杂,下面还有一个新建文件的默认设置,也可能刚才新建文件时已经默认了一些编码设置。这个方式太复杂,放弃了。
在python代码中声明编码方式
在首行声明编码方式,首行加入代码:
# -*- coding=utf-8 -*-
在文件打开处也声明文件的编码方式。用逗号分隔后加入代码:
encoding='utf-8'
运行结果如上。
因为我们已经知道python本身默认UTF-8编码,只是内部文件默认的编码一样而已,所以我们也可以只在打开文件时声明编码方式。如下
文件的读写
上图已经有读取文件的部分,即f.read(),读取文件内容。
文件打开时,我们在第2个参数处设置了文件的打开方式,第一次我们用的人“r”,代表文件只读不写。上图“r+”表示打开文件进行读写。同样的还有“w”表示只能写入(已存在的同名文件会被删除),还有 'a' 表示打开文件以追加内容;任何写入的数据会自动添加到文件的末尾。
这个打开模式的参数是可选的;省略时默认为 'r'。
我们来读写一次。
写好代码后,我运行了几次,总觉得有点问题,然后修改了几次,最后跳出下面的情况。
如红色眉头部分提示,文件以错误的编码方式(UTF-8)载入!
即,我们在新建的时候不是UTF-8编码的文件。哎,心累。
因为我是在pycharm环境内新建TXT文本的,现在把这个文本删了,通过桌面新建一个同名文件,再移动到对应文件夹,试试?
嗯,暂时是可以运行的,大体没毛病。
正常打开文本文件,正常读取。问题来了,第3和第4行代码没有体现出来。
第3行代码就是文件的写操作,在文件“指针”处进行写入操作。\n是转义字符,它代表换行符。
指针
这里需要加入一个指针的概念。一般在C语言会提到指针,python这里类似的是索引。我们读书,会说读到了第2段的第1句的第3个字,指针就是一个位置,指示当前操作的位置。索引也是。
经第2和第3行代码的文件操作,现在指针在哪里?已经指到文件的最末端了。所以第4行代码的f.read()操作,就是从文末进行读取文本文件。得到一个空行。
我们可以把文件“指针”(索引)重新定位。
如图第3行进行写入操作后,通过f.seek(0),来把指针重新指向索引0。
一切如我所愿。因为在不断写入一行文本文字,所以越运行,文本行数越多。
python文件的读写,我也尽力了,大体就这个过程,你学废了吗?
举报/反馈