![702f0e7f-b712-eb11-8da9-e4434bdf6706.png](http://p01.5ceimg.com/content/702f0e7f-b712-eb11-8da9-e4434bdf6706.png)
python
对于初学者来说,一份详尽又清晰明白的指南很重要。今天,猫猫跟大家一起,好好学习Python文件读写的内容,这部分内容特别常用,掌握后对工作和实战都大有益处。学习是循序渐进的过程,欲速则不达。文章较长,建议大家收藏,以备复习查阅哦。
1、如何将列表数据写入文件?
2、如何从文件中读取内容?
3、多样需求的读写任务
4、从with语句到上下文管理器
如何将列表数据写入文件?
![722f0e7f-b712-eb11-8da9-e4434bdf6706.png](http://p01.5ceimg.com/content/722f0e7f-b712-eb11-8da9-e4434bdf6706.png)
首先,我们来看看下面这段代码,并思考:这段代码有没有问题,如果有问题的话,要怎么改?
li = ['python',' is',' a',' cat']with open('test.txt','w') as f: f.write(li)
现在公布答案,这段代码会报错:
TypeError Traceback (most recent call last) in () 1 with open('test.txt','w') as f:----> 2 f.write(li)TypeError: write() argument must be str, not list
以上代码的想法是将list列表内容写入txt文件中,但是报错 TypeError: write() argument must be str。就是说,write()方法必须接受字符串(str)类型的参数。
![742f0e7f-b712-eb11-8da9-e4434bdf6706.png](http://p01.5ceimg.com/content/742f0e7f-b712-eb11-8da9-e4434bdf6706.png)
Python中内置了str()方法,可以返回字符串版本的对象(Return a string version of object)。所以,上面的例子中,我们试试把 f.write(li) 改为 f.write(str(li)) ,先做一下字符串类型的转化看看。代码略。
这次没有报错了,但是打开文件就傻眼了吧,写入的内容是“['python',' is',' a',' cat']”。怎么才能写成“python is a cat”呢?
文件写操作还有一个writelines()方法,它接收的参数是由字符串组成的序列(sequence),实际写入的效果是将全部字符串拼接在一起。字符串本身也是一种序列,所以当参数是字符串的时候,writelines()方法等价于write()。
# 以下3种写法等价,都是写入字符串“python is a cat”In [20]: with open('test.txt','w') as f: ...: f.writelines(['python',' is',' a',' cat']) ...: f.writelines('python is a cat') ...: f.write('python is a cat')# 以下2种写法等价,都是写入列表的字符串版本“['py