标准输入输出及 IO 操作
1. 多目标赋值
a,b,c,d,e = '我喜欢你啊'a, *b = '我喜欢你啊'>>> a = '我', b = '喜欢你啊'a = b = c = d = e = 1 # 全部赋值为 1 , 且地址不同a,b = b,a # 交换值2. 基本输入输出
print(value1, value2, ..., sep=' ', file=sys.stdout, end='\n')# sep 分隔符, 默认为空格# file 输出位置, 默认为控制台, 也可以重定向到文件# end 结尾添加内容, 默认换行input(string)# 以 string 作为提示符, 请求用户输入# 返回字符串, 常结合 exec, eval, int, float 等使用3. 程序控制结构
if-elif-else 语句, 用于多分支选择, 这里的 “表达式” 可以是序列对象, 此时判断序列对象是否非空, else 和 elif 不是必要的
if 表达式1: 语句elif 表达式2: 语句elif 表达式3: 语句...else: 语句for (i, j, ...) in iterable语句, 用于循环, 可以使用 countine 和 break 进行语句控制
for i in iterable: 语句for i,j in iterable: # 可以同时使用多个 “计数器” 语句while 语句, 用于循环, 可以使用 countine (结束本次循环)和 break (结束此循环语句)进行语句控制, else 不是必要的
while 表达式: 语句else: 语句try 语句, 用于捕捉异常, 从上到下, 若未被捕捉, 则进入 else, finally 是一定会执行的语句, 相当于告诉“我已经处理完所有的错误了”
try: 语句 # 一般只写一条语句except 异常类1: 语句except 异常类2: 语句else: 语句 # 未被上面捕捉时执行finally: 语句 # 一定会执行4. 可执行对象解析命令
exec语句用来执行存储在代码对象、字符串、文件中的Python语句eval语句用来计算存储在代码对象或字符串中的有效的Python表达式compile语句则提供了字节编码的预编译
eval(compile( 'print(3 + 6)', '', 'exec'))注意事项:
eval函数只负责对表达式进行处理(对输入进行输出), 并没有赋值的功能, 本身是没有影响当前代码环境的能力. 若需要处理赋值表达式, 则需要使用exec网络安全性考量: 若用户输入
__import__('os').system('dir')当前目录的文件夹都会展现在用户前面, 也可以使用 read, remove 等方法控制服务器
实际使用时, 可以对用户输入的语句进行检查; 也可以使用 ast 模块的 literal_eval 代替
import asteval = ast.literal_eval5. IO 操作
(1) 打开文件
打开文件有两种方式, 一种是 open - close 语句, 一种是 with 上下文管理.
f = open('路径','打开模式')# TODO 执行的操作f.close() # 如果没有 close, 文件将一直处于占用状态# f.closed # 查看文件是否已经关闭with open('路径','打开模式') as file: # TODO 执行的操作一般建议使用后者, 在文件读写结束后自动关闭文件. 这里的路径可以是相对路径也可以是绝对路径. 如果是绝对路径, 一般结合 os 模块使用.
(2) 打开模式
r # (默认)只读模式, 文件不存在的时候报错, 不可写入(一般用此模式打开, 在python中创建数据副本)x # 写入模式, 文件不存在的时候创建文件, 文件存在的时候报错w # 写入模式, 文件不存在的时候创建文件, 文件存在的时候覆盖文件a # 追加写入模式, 文件不存在的时候创建文件, 文件存在的时候在文件后写入新内容b # 以二进制读取文件, 'bw','br'+ # 可读写模式, 'r+','w+', 追加属性, 不改变基本原则f.readable() # 查看这个模式是否可读f.writeable() # 查看这个模式是否可写# 其他参数 encoding = 'utf8' 编码类型(3) 文件读取
f.read() # 指针读取模式, 默认读取全文, 返回str, 一般使用此模式, 结合字符串 split 等方法使用f.read(n) # 读取n个字节f.next() # 指针跳转到下一个位置, 并返回内容f.readline() # 指针按行读取f.readlines() # 读取所有行, 并返回listf.seek(n) # 指针位置重置为n(0为文件头)f.tell() # 当前指针位置(4) 写入数据
f.write('语句1\n语句2') # 写入缓存f.writelines(['语句1\n', '语句2']) # 写入缓存, 多行数据用此语句f.flush() # 冲刷, 缓存区导入磁盘(5) SIO 操作
SIO 指将文件动态内存管理, 速度极快, 但是存储数据量有限, 使用方法与 IO 操作类似:
import iosio = io.StringIO()sio.write()sio.read()sio.getvalue()sio.seek()sio.close()# 写入内存中, 速度快
发表评论
Comment List(1)
TB
2024.8.14 14:08
hellow