如果建网站,制作本地网页,网站开发面试题,信誉好的o2o网站建设IO
文件读写
open
open()为内置函数#xff0c;用于读写文件
mode
读写 x#xff0c;create#xff0c;创建#xff0c;文件存在报错#xff0c;可写不可读r#xff0c;read#xff0c;读入#xff0c;默认读写方式#xff0c;文件不存在报错#xff0c;可读不可…IO
文件读写
open
open()为内置函数用于读写文件
mode
读写 xcreate创建文件存在报错可写不可读rread读入默认读写方式文件不存在报错可读不可写wwrite写入文件不存在会创建文件存在清空文件内容可写不可读aappend追加文件不存在会创建文件光标移至文件末尾可写不可读update更新扩展在x、r、w、a基础上扩展功能为可读可写不能单独使用 内容 ttext文本默认读写内容读取文本文件bbinary二进制读取二进制文件 使用 必须且只能指定一个读写模式x/r/w/a四选一扩展可选必须且只能指定一个读写内容t、b二选一通常t可省略不会因为可写而使得文件创建r模式打开文件若文件不存在依然会报错
示例文本
file.txt12
你好9
世界9
。6
HELLO WORLD15
不念过往, 不畏将来30读写文件
f open(./file.txt, moder, encodingutf-8) # Unicode字符集UTF-8编码方式
print(f.readable()) # True 是否可读
print(f.writable()) # True 是否可写print(f.tell()) # 0 光标位置按字节最开始是00表示所有内容之前不指向任何字节
print(f.read(11)) # file.txt12 按字符数量读取默认读取所有示例文本中第一行有12个字节
print(f.tell()) # 12 英文字母和标点占一个字节、换行Windows CRLF占两个字节
print(f.seek(15, 0)) # 15 移动光标到第15个字节 whence 0 将开头作为参考位置 1 将当前作为参考位置 2 将末尾作为参考位置
print(f.tell()) # 15
print(f.readline()) # 好9 从当前位置向后读取一行并不一定是完整一行 中文占3个字节
print(f.tell()) # 21
print(f.readlines()) # [世界9\n, 。6\n, HELLO WORLD15\n, 不念过往, 不畏将来30] 从当前位置向后读取若干行
print(f.tell()) # 79
print(f.seek(0)) # 0 回到最开始
print(f.write(不念过往, 不畏将来\n\n)) # 12 写入12个字符写30个字节写多少覆盖多少
print(f.tell()) # 30
print(f.truncate(12)) # 23 截断文件返回截断后的文件字节数在文件某个位置截断若文件末尾在截断位置之后截断位置之后所有内容清除若文件末尾在截断位置之前不足的部分补空格默认在当前光标位置截断size f.tell()
print(f.tell()) # 30 截断操作不改变光标位置
print(f.truncate()) # 30 不足补充空格
print(f.tell()) # 30 光标位置不变
f.close() # 关闭文件# 最终示例文本会变为不念过往 后面是空格共18个。注
在Python中\n表示换行但针对不同平台python的\n对应不同的字符。Windows CRLF \r\n、Unix LF \n、MacOS CR \r。把Windows的一个文本文件直接上传Linux再打开会出现格式问题。Git作为分布式版本控制系统同一份代码要在各个平台协作开发其实现了代码源文件中换行字符的自动转换。上述源码在WIndows下运行没问题在Linux或MacOS运行需要根据上述规则修改光标移动参数。
序列化
序列化是将内存中的对象转换成一定格式的二进制数据或文本数据便于存储在文件中或者通过网络传输后续根据该格式可从文件或者网络读入数据并重建对象的过程称之为反序列化。
把对象存储在内存之外把对象传输到另一台机器的内存
json
https://www.json.org/json-en.html
# 序列化为json
import jsond {1: a, 2: b}
print(d, type(d))
d_dump json.dumps(d)
print(d_dump, type(d_dump))
d_rd json.loads(d_dump)
print(d_rd, type(d_rd))d {1: 键值对, 2: b}
f open(./dump.txt, w, encodingutf-8)
json.dump(d, f, ensure_asciiFalse)
f.close()
f open(./dump.txt, encodingutf-8)
d json.load(f)
f.close()
print(d, type(d))pickle
# 序列化为pickle定义的二进制格式
import pickled {1: a, 2: b}
print(d, type(d))
d_dump pickle.dumps(d)
print(d_dump, type(d_dump))
d_rd pickle.loads(d_dump)
print(d_rd, type(d_rd))d {1: 细节, 2: b}
f open(./dump.txt, wb)
pickle.dump(d, f)
f.close()
f open(./dump.txt, rb)
d pickle.load(f)
f.close()
print(d, type(d))shelve
# 序列化为shelve定义的二进制格式
import shelvef shelve.open(open_file)
f[key] {int: 11, float: 1.2, string: ssd}
f.close()f shelve.open(open_file, flagr)
e f[key]
f.close()
print(e)ini文件操作
import configparserconfig configparser.ConfigParser()
config[DEFAULT] {ServerAliveInterval: 45,Compression: yes
}
config[bitbucket.org] {user: da}with open(config.ini, w) as configfile:config.write(configfile)config configparser.ConfigParser()
config.read(config.ini)
print(config.sections())
print(bitbucket.org in config)
print(b.org in config)
print(config[bitbucket.org][user])
print(config[DEFAULT][Compression])
config.add_section(add-section)
config.remove_section(bitbucket.org)
config.set(add-section, k1, 111)
config.set(add-section, k2, 222)