读书笔记六
来源:互联网 发布:禅道 专业版 源码 编辑:程序博客网 时间: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中读取对象。
- 读书笔记六
- 人月神话读书笔记(六)
- 《论语》读书笔记 之六
- Programming Ruby 读书笔记(六)
- Effective Java读书笔记六
- 【Accelerated C++】读书笔记(六)
- effective java读书笔记六
- 读书笔记(六)--成交
- Clean Code 读书笔记六
- PHP程序设计读书笔记六
- 图解HTTP读书笔记(六)
- 读书笔记(六)
- python读书笔记(六)
- Effective C++ 读书笔记六
- effective c++ 读书笔记(六)
- 《Windows程序设计》读书笔记之六
- 读书笔记 成功演示六要素
- C++Primer读书笔记(六)
- 限制对话框的移动范围
- Value '0000-00-00' can not be represented as java.sql.Date解决办法
- transformClassesWithDexFor2011Debug "\bin\java.exe'' finished with non-zero exit value
- android APP进行混淆
- Android开发:shape和selector和layer-list的(详细说明)
- 读书笔记六
- 视频编码器:编译libx264
- 二进制的使用<bitset>
- Android记事本app
- html <iframe>自适应高度
- oracle11G listener.log位置
- 1-5 核心初始化
- 京东的笔试
- QT多线程快速排序