Python文件基础

关于文件的几点注意事项

1.文件对象属性

打开一个文件后,得到一个文件对象fp,通过它可以获得与该文件相关的各种信息。以下是与文件对象相关的所有属性。
· fp.closed:如果文件已被关闭,则返回True;否则返回False。
· fp.mode:打开文件的模式。
· fp.name:得到已被打开的文件的文件名。

2.列表中出现字符串“\ufeff”及其解决方案

举例36:\ufeff问题及其解决办法。
上述程序打开一个示例文件,但从结果中发现,在读取的内容中出现了\ufeff,而真正的文件内容是从“你好”开始的。
解决办法如下:
从上述改进后的程序中可以看出,解决\ufeff问题的关键在于通过utf-8-sig编码格式对字符串进行转码:decode(‘utf-8-sig’)。
由此得到启发,如果在打开文件时直接采用utf-8-sig编码格式,那么能不能解决这个乱码问题?答案是令人惊喜的,请看:
真的解决了!这是为什么呢?
实际上,需要从以下两种编码格式的本质加以阐述。
(1)UTF-8编码。它以字节为编码单元,字节顺序在所有系统中都相同,不存在字节序的问题,因此它并不需要字节序标记(Byte Order Mark,BOM)。
(2)utf-8-sig编码。它是一种带BOM的UTF-8编码格式,存在字节序的问题,必须带BOM以标识字节序,而BOM即字符U+FEFF。从Unicode 3.2开始,U+FEFF只能出现在字节流的开头,只能用于标识字节序。由此可知,列表中的字符串“\ufeff”并不是乱码,而是由于编码格式不一致才出现的。

利用Pygal模块对JSON格式的数据进行可视化

[参考文档](Pygal,可导出矢量图的Python可视化利器 - 知乎 (zhihu.com))

安装并导入Pygal

使用pip或者conda进行安装,在命令行输入:

1
pip install pygal

雷达图

1
2
3
4
5
6
7
8
radar_chart = pygal.Radar()
radar_chart.title = 'V8 benchmark results'
radar_chart.x_labels = ['Richards', 'DeltaBlue', 'Crypto', 'RayTrace', 'EarleyBoyer', 'RegExp', 'Splay', 'NavierStokes']
radar_chart.add('Chrome', [6395, 8212, 7520, 7218, 12464, 1660, 2123, 8607])
radar_chart.add('Firefox', [7473, 8099, 11700, 2651, 6361, 1044, 3797, 9450])
radar_chart.add('Opera', [3472, 2933, 4203, 5229, 5810, 1828, 9013, 4669])
radar_chart.add('IE', [43, 41, 59, 79, 144, 136, 34, 102])
radar_chart.render()

效果如下:

image-20220801102051712