欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python学习笔记(八)

程序员文章站 2022-07-09 23:26:53
...

对应第十章
如果文件内容不是逐行输出则会输出列表形式。

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()函数返回的编码方式。