1. 格式化输出
1.1 f-string
在一个字符串的前面加上前缀 f 或 F,然后字符串里面就可以通过 { } 引用python 表达式,例如:
name = 'Bill'
age = 25
f"My name is {name}, {age} years old. "
{ } 中除了变量化,还可以加入一引起表达式用来更精细得控制字符串格式,如:
pi = 3.1415926
print(f"the value of pi is {pi:.3f}") # 冒号后面加入对变量pi的一些限制,本例中小数点后保留三位小数
{ }中,如果冒号后面跟的是一下整数,限制该处字段的最小字符宽度,达不到设定的字符数就会用空格补齐,这样有利于输出的格式对齐,如下, 每个输出内容的升度虽不一样,但是会对齐输出:
1.2 str.format() 来格式化字符串
像第一种方法一样,字符串中也用 { } 来占位,然后用str.format() 方法传入参数以填充到字符串中
“My name is {}, {} years old”.format('Bill' , 25)
格式化字段 { } 中可以用数字来引用 str.format() 位置参数,{0} 就代表传入的第一个参数,这样的一个好处是可以更改传入参数的顺序,不必一定得按照传入的顺序来填充字符串,如下:
如果str.format()中的参数是关键字参数,那么格式化字段 { }中就可以通过关键字来引用,如下:
位置参数和关键字参数可以混合使用,关与位置参数和关键字参数前的文章中有介绍
1.3 手动格式化字符串
这种方法需要自己调用相应的方法来对字符串的格式进行设置,这种方法更精细化,特定化,但是操作起来也更繁琐,实际中应用的并不多,举例如下:
1.4 % 操作符格式化字符串
这个方法来源于c语言,一直被保留下来,使用起来也很简单方便,字符串中, % 用来占位同时指定该字段的类型和格式,然后在字符串外传入实例,例如,%6.3f 中 6是该字段长度,不足的话用空格补齐,.3f指小数点后三位:
2. 文件的读写
2.1 打开文件: open(filename, mode) , 该方法返回一个文件对象用于操作
mode 有以下几种:
r:只读, w: 只写, r+: 读写
a: 将数据写入到文件末尾(如果文件中已有内容)而w的写入会覆盖文件的原内容
通常文件打开会以文本的格式打开,如果在mode中指定b,如rb, 就代表以二进制的格式打开
open('test.txt', 'rb')
直接用open()方法打开文件后,相应的要进行关闭操作,如 f = open('text.txt'), 最后要调用 f.close()来关闭文件。文档更推荐用with 关键字来进行打开文件操作,就不用再额外进行关闭:
with open('test.txt') as f:
f.read()
2.2 文件对象的操作方法(假设 f 是一个已经打开的文件对象)
(1) f.read(size) #读取指定size的文件内容,f.read()默认读取全部内容,有可能引起内存不足,读取到末尾返回空字符串
(2)f.readline() #读取文件的每一行内容,读取到末尾返回空字符串
(3)f.readlines() #读取文件的所有行
(4)f.write(string) #将字符串的内容写入到文件
(5)f.tell() #返回一个数字,代表该文件对象当前所在的位置(相对于二进制模式下文件的 开始位置),如果是文本模式,返回一个模糊的数字
(6)f.seek(offset, from_what)
#改变文件对象所在位置,offset 是相对的偏移量,from_what 有三个选择,0 代表从文件开始位置,1代表从当前位置,2代表从文件末尾。如f.seek(5,0)代表文件对象的位置移动到文件的第6个字节,这些都是在二进制模式下的操作
# 若是在文本模式下,f.seek()只允许从文本的开始位置进行偏移,或者f.seek(0,2)移动到文本的末尾,offset 的值只能是f.tell() 能够返回的值或者是0
3. 保存结构化数据到json文件
python中有专门的json 模块来进行结构化数据的存储,弥补了open()方法只能读写文本数据的不足。
import json
json.dumps(data) # 把结构化数据转化为字符串,这个过程叫序列化
json.dump(data, f) # 把结构化的数据 序列化之后写入文件,f 是一个文件对象
json.load(f) # 把文件中文本转化为结构化数据,这个过程叫去序列化,f 是一个文件对象