对应第十章
如果文件内容不是逐行输出则会输出列表形式。
try:
with open('D:\\pycharmprograms\\pi.txt') as f:
contents=f.readlines()
except FileNotFoundError:
print("FileNotFoundError")
else:
print(contents)
>>>['3.1415926535\n', ' 8979323846']
json数据格式的列表最后一行没有/n
import json
try:
with open('D:\\pycharmprograms\\pi.txt') as f:
contents=f.readlines()
except FileNotFoundError:
print("FileNotFoundError")
else:
with open('D:\\pycharmprograms\\pi.json','w') as f:
json.dump(contents,f)
>>>["3.1415926535\n", " 8979323846"]
questions:
- python是否是默认逐行读入,列表储存?
并不是,程序中使用了方法readlines(),该方法返回一个列表
- 参数encoding的作用?
open()函数完整的语法格式为:
open(file, mode=‘r’, buffering=None, encoding=None, errors=None, newline=None, closefd=True)
encoding:所要打开文件的编码格式读取文件的时候,如果编码不对,会报错列如filename=‘data.csv’(该文件的编码格式是utf-8)
open(filename,encoding=‘gbk’)(调用函数时用的是gbk编码)会出现类似以下报错UnicodeDecodeError: 'gbk' codec can't decode byte 0xac in position 423: illegal multibyte sequence
正确的打开方式是open(filename,encoding=‘utf-8’)
读取时如果不指明编码格式,默认使用locale.getpreferredencoding()函数返回的编码方式。