python文件读写详解
f = open('users', encoding='utf-8')
以上内容是打开当前目录下的users文件,其他路径下的写绝对路径即可。文件内有中文时必须写encoding='utf-8'。读取模式不写时默认读模式。打开文件后把文件对象赋值给变量f。下面读文件内容就从f中读取。
介绍下几种读文件模式:
f = open('users', 'r') #打开不存在的会报错,不能写
f = open('users', 'w') #不存在会创建,存在会清空原有内容,不能读取
f = open('users', 'a') #不存在会创建,在原有内容上追加内容,不能读取
f = open('users', 'r ') #打开不存在的会报错,可以写会从0的位置开始写,原有内容会被覆盖
f = open('users', 'w ') #不存在会创建,存在会清空原有内容,所以读取的是空内容
f = open('users', 'a ') #不存在会创建,在原有内容上追加内容,打开文件时文件指针放在了最后,所以把文件指针放到开始位置就可以读内容。f.seek(0) 命令可以移动文件指针到最前面,且写入时不管指针在什么位置都是在最后追加写。
从上可以看出最万能的读取模式就是a 了,文件不存在会创建,且能读能写,只是读的时候要记得seek一下哦!
下面介绍下具体读取时的一些方式:
f.readlines() #读取所有内容到一个列表中,每行是列表中的一个字符串格式的元素。文件内容较大时不推荐这种方式
f.readline() #读取文件一行内容,格式为字符串。
f.read() #读取文件所有内容到一个字符串中,可以用换行符切割得到每行内容。
直接循环文件获取每行内容,即:
for line in f: #每次获取文件内容的一行,获取到的是字符串格式,此时是一个生成器,对于较大文件这种方式比较高效。
print(line)
说完读文件了,说下写文件,有三种方式:
1,f.write('I hope 世界和平\n') #直接写入字符串内容,如果希望下次写入时重启一行不要忘记在每次内容最后加上换行符。write命令只能写入字符串,其他格式的数据不能写入。
2,f.writelines() #我另一篇博客里提到,writelines()可以写入任何字符序列,即内容都是字符串的列表,元祖,集合都可以写入。比如[1,2,3,3]内容是整数的列表就不可以,会报错。['1','2','3','4']可以写入,需要换行加\n。
3,还有一种方式是使用print语句直接写入到文件里。
print('hello,world!',file=f),需要注意的是与上面两种方式不同的是print语句写入后会自动换行,无需手动添加\n。