Python教程-输入输出
本系列为作者在官网学习python时做的笔记,详见python官网
python标准库官方文档,查阅标准库相关的内容
python语言参考,查看python语法,该文档是简洁的,但试图做到准确和完整。非必要的内建对象类型和内建函数、模块的语义描述在 Python 标准库 中。
标准库和语言参考涵盖了python的所有内容,他们是互补的,如果在语言参考中没有找到需要的内容那么就一定在便准库文档中。
更漂亮的输出格式
使用 repr() 或 str() 函数将任何值转化为字符串快速显示某些变量以进行调试。
str() 函数是用于返回人类可读的值的表示,repr() 是用于生成解释器可读的表示(如果没有等效的语法,则会强制执行 SyntaxError)对于没有人类可读性的表示的对象, str() 将返回和 repr() 一样的值。
格式化字符串文字
格式化字符串字面值 (常简称为 f-字符串)能让你在字符串前加上 f 和 F 并将表达式写成 {expression} 来在字符串中包含 Python 表达式的值。
可选的格式说明符可以跟在表达式后面。这样可以更好地控制值的格式化方式。以下示例将pi舍入到小数点后三位:
|
|
在 ‘:’ 后传递一个整数可以让该字段成为最小字符宽度。这在使列对齐时很有用。:
|
|
其他的修饰符可用于在格式化之前转化值。 ‘!a’ 应用 ascii() ,’!s’ 应用 str(),还有 ‘!r’ 应用 repr():
|
|
f字符串是format方法的格式一致。
可以与r原始字符串一起使用,还可以使用条件表达式
|
|
字符串的 format() 方法
|
|
花括号中的数字可用来表示传递给 str.format() 方法的对象的位置。
|
|
如果在 str.format() 方法中使用关键字参数,则使用参数的名称引用它们的值
|
|
位置和关键字参数可以任意组合:
|
|
可以给format传递字典
|
|
内置函数 vars() 返回包含所有局部变量的字典。
手动格式化字符串
print函数的sep和end选项,字符串的ljust,rjust,center以及zfill方法
旧的字符串格式化方法
字符串插值:
|
|
读写文件
open(filename, mode) 返回一个 file object
|
|
mode 可以是 ‘r’ 只读,‘w’ 只写,‘a’ 追加。‘r+’ 读写。默认为 ‘r’。
默认以 text mode 打开的:以指定的编码方式进行读写。编码格式默认值与平台相关。
在mode 中追加的 ‘b’ 则以 binary mode 打开文件:以字节的形式进行读写的。
在文本模式下读取时,默认会把平台特定的行结束符 (Unix 上的 \n, Windows 上的 \r\n) 转换为 \n。在文本模式下写入时,默认会把出现的 \n 转换回平台特定的结束符。这样在幕后修改文件数据对文本文件来说没有问题,但是会破坏二进制数据例如 JPEG 或 EXE 文件中的数据。请一定要注意在读写此类文件时应使用二进制模式。
with 关键字自动在子句结束后关闭文件:
|
|
没有使用 with 关键字,调用 f.close() 来关闭文件并立即释放它所使用的任何系统资源。
调用 f.write() 时未使用 with 关键字或未调用 f.close() 可能导致 f.write() 的参数没有完全写入到磁盘,即使程序是正常退出的。
文件对象的方法
假定已创建名为 f 的文件对象。
f.read(size)读取一些数据并将其作为字符串(在文本模式下)或字节串对象(在二进制模式下)返回。 size 被省略或者为负数时,将读取并返回整个文件的内容;如果文件的大小是你的机器内存的两倍就会出现问题。 当取其他值时,将读取并返回至多 size 个字符(在文本模式下)或 size 个字节(在二进制模式下)。 如果已到达文件末尾,f.read() 将返回一个空字符串 (’’)。
f.readline() 从文件中读取一行;换行符(\n)留在字符串的末尾,如果文件不以换行符结尾,则在文件的最后一行省略。空字符串"“表示已经到达了文件末尾,空行返回’\n’:
循环遍历文件对象读取行:
|
|
list(f)或 f.readlines()以列表的形式读取文件中的所有行
f.write(string) 会把 string 的内容写入到文件中,返回写入的字符数
|
|
写入其他类型的对象之前,需要先把它们转化为字符串(在文本模式下)或者字节对象(在二进制模式下):
|
|
f.tell() 返回二进制模式下从文件开始到当前位置的字节数
f.seek(offset, whence)改变文件对象的位置。offset 来计算位置,whence 参数指定参考点。 whence 的 0 值表示从文件开头起算,1 表示使用当前文件位置,2 表示使用文件末尾作为参考点。 默认值为 0。
|
|
在文本文件中,只允许相对于文件开头搜索(使用 seek(0, 2) 搜索到文件末尾是个例外)并且唯一有效的 offset 值是那些能从 f.tell() 中返回的或者是零。其他 offset 值都会产生未定义的行为。
编码问题
文件打开时可以设置编码,excel并不能识别utf-8的文件,写csv文件时可以将编码改为gbk文件
|
|
使用 json 保存结构化数据
将对象序列化为json字符串:
|
|
dump() 将对象序列化为 text file :
|
|
load()解码text file 对象:
|
|
Python3 字符串与hex之间的相互转换
bytes.fromhex(a):将十六进制串转换为二进制串
bytes.hex(a):将二进制串转换为十六进制串