读书笔记六

来源:互联网 发布:禅道 专业版 源码 编辑:程序博客网 时间:2024/05/16 07:53

python tutorial 第七章

这章主要是讲输入和输出的。


python可以通过repr()和str()的方法来讲value字符串化。repr()的目的是生成可以让解释器阅读的表达,而str()的目的是生成方面人来阅读的表达。它们基本上没有什么差别,除了在对字符串和浮点数的转换上。其中,repr()对于浮点数的保存精度更高,对于字符串的转换则多带有一对引号,表示字符串。


对输出的内容进行排版还是很有必要的。

str.rjust(): 该方法会将str的宽度根据设定的值来自动填充,内容局右,左边用空格填充。str.ljust()和str.center()是类似的方法。如果输入的字符串本身就比设定的宽度要长,那么并不会缩短,还是输出原本的内容。

str.zfill(): 该方法是自动在字符串的左边用0来填充至设定的宽度。


str.format(): 该方法对于格式化字符串是非常有用的,它们可以帮你组建成你想要的样子。现在来举几个代表性的例子。

print 'The story of {}, {}, and {}.'.format('Bill', 'Manfred', other='Georg')

print 'The story of {0}, {1}, and {other}.'.format('Bill', 'Manfred', other='Georg')

print 'The value of PI is approximately {!r}.'.format(math.pi)  其中,'!s'代表str(),'!r'代表repr()。

字段名的后面加一个':',后面可以接特殊的格式设置。

print 'The value of PI is approximately {:.3f}.'.format(math.pi)  其中,'!s'代表str(),'!r'代表repr()。 

字段名的后面加一个':',后面直接接数字,代表该变量得最小打印宽度(如果是数字+d,代表居右)。

对于字典格式的需要格式化显示的字符串,我们可以用[key]的方式来选择输出字符串中的哪段。

table = {'S':12, 'A':23, 'C':566}

print 'S: {S:d}; A: {A:d}; C: {C:d}'.format(**table)


老式的格式化字符串是用%的方式。


Reading and Writing Files

open(filename, mode): mode可以选择,'r'只读;'w'只写;'a'在结尾处添加内容;'r+'同时可读可写;如果mode省略,则默认为'r'。

f.read(size): size如果没有填写,则文件的内容全部读取出来,如果内存不够或者文件太大, 则尽可能多的读取。

f.readline(): 每次读取一行,并且在行尾会有换行符,如果文件最后一行不是空行的话,那么最后一行的行尾是没有换行符的,其实最后一行是空字符串。这样就可以很好的判断了,只有换行符的代表空行,没有换行符的空字符串行代表文件读到结尾了。

f.write(string): 返回None。如果想写入非字符串的变量,需要先转化成字符串格式。

f.tell(): 返回当前文件对象在文件中的位置,用一个实数表示从文件开始到当前位置的字节数。

f.seek(offset, from_what): 定位文件对象坐标,从from_what处添加offset字节即为定位的位置。from_what为0代表从文件开始;为1代表从当前文件位置;为2代表从文件结尾。

f.close(): 关闭文件并且释放占用的系统内存。

with open(filename, mode) as f:

pass

用with来打开文件,等同于try-finally,而且会自动关闭文件,使用起来非常方便。


保存结构数据为json格式

用文件的格式保存数据,虽然比较方便,但是在保存数字类型的时候还是比较麻烦的,因为在保存的时候要转换为字符串,在读取的时候,更要清楚的分辨并且转换出来。面对复杂的嵌套的lists或者dictionaries时,就过于繁琐了。

所以python支持JSON,可以让数据层级化,并且转换为字符串形式表达,这个过程叫做序列化。而从字符串形式表达重构原来的数据格式的过程为反序列化。

json.dumps(x): 可以将对象x直接序列化。

json.dump(x, f): 可以直接将对象x序列化并保存在文件f中。 

json.load(f): 从保存着json格式的文件f中读取对象。






0 0
原创粉丝点击