os 表示操作系统
os模块是与操作系统交互的一个接口
os.getcwd()获取当前工作目录,即当前python脚本工作的目录路径
os.chdir(a)改变当前脚本工作目录,相当于shell下cd
os.curdir返回当前目录('.')
os.pardir获取当前父目录字符串名('..')
os.makedirs(a)可生成多层递归目录
os.removedirs(s)若目录为空,则删除,并递归到上一级目录,若也为空则删除以此类推
os.makdir(a)生成单级目录
os.rmdir()删除单级空目录,不为空则无法删除报错
os.listdir()列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
os.remove()删除一个文件
os.rename()重命名文件/目录
os.stat()获取文件/目录信息
os.sep 输出操作系统特定的路径分隔符
os.linesep输出当前平台使用的行终止符
os.pathsep输出用于分割文件路径的字符串
os.name输出字符串指示当前使用平台
os.system运行shell命令直接显示
os.environ获取系统环境变量
os.path.abspath返回path规范化的绝对路径
os.path.split将path分割成目录和文件名元组返回
os.path.dirname返回path的目录,其实就是os.path.split的第一个元素
os.path.basename返回path最后的文件名,如果path以/或结尾则返回空值
os.path.exists如果path存在返回True不存在返回False
os.path.isabs如果path是绝对路径返回True
os.path.isfile如果path是一个存在的文件,返回true否则False
os.path.isdir如果path是一个存在的目录返回True否则False
os.path.join将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
oa.path.getatime返回path所指向文件或者目录的最后存取时间
os.path.setmtime返回path所指向的文件或者目录最后修改时间
os.path.getsize返回path的大小
os.path.normcase在linux和mac平台上,该函数会原样返回path,在windows平台上会将路径中所有字符转换为小写并将所有斜杠转换为反斜杠
os.path.normpath规范化路径
shutil模块
高级的文件文件夹压缩包处理模块
shutil.copyfileobj()将文件内容拷贝到另一个文件中
shutil.copyfileobj(open('a.txt','r'),open('b.txt','w'))
shutil.copyfile()拷贝文件
shutil.copyfile('1.txt','2.txt')目标文件无需存在
shutil.copymode仅拷贝权限内容组用户均不变目标文件必须存在
shutil.copystat仅拷贝状态的信息,包括mode,bits atime mtime flags目标文件必须存在
shutil.copy拷贝文件和权限
shutil.copy2拷贝文件和状态信息
subprocess翻译为子进程
进程指正在运行的程序
子进程由另一个正在运行程序启动的程序
为什么使用子进程?
需要在当前进程调用另一个进程完成任务时
os.system在执行时,直接将结果输出到控制台
subprocess不仅可以启动子进程,还能与子进程进行数据交互
dir表示要执行的命令
shell表示dir是一个命令
stdout指定输出管道
管道在python中是传输数据的工具,本质是读写同一个文件
p = subprocess.Popen("dir",shell=True,stdout=subprocess.PIPE)
print(p.stdout.read())
上面代码是 启动了一个dir子进程 并将结果输出到指定管道
当需要在python中启动一个子进程,并且将它进行数据交互时就是用subprocess
如果不需要数据交互可以使用os.system
configparser创建一个配置文件解析器
cfg=configparser.ConfigParser()
读取名为test.cfg的配置文件必须指定编码
cfg.read('test.cfg',encoding='utf-8')
获取某个分区下的某个选项 第一个参数分区名 第二个选项名称
username = cfg.get("mysql","username")
以下三个函数是帮你封装了 类型转换
cfg.getfloat()
cfg.getint()
cfg.getboolean()
读取配置信息 两步
1.读取某个配置文件
2.调用get函数
import configparser
修改
cfg = configparser.ConfigParser()
cfg.read("test.cfg",encoding="utf-8")
将mysql分区下的lock改为True
cfg.set("mysql","lock","true")
with open("test.cfg","wt",encoding="UTF-8") as f:
cfg.write(f)
添加新的选项 port 值为3306
cfg = configparser.ConfigParser()
cfg.read("test.cfg",encoding="utf-8")
添加新的分区
cfg.add_section("新分区")
添加新的选项 port 值为3306
cfg.set("mysql","port","3306")
with open("test.cfg","wt",encoding="UTF-8") as f:
cfg.write(f)
删除
cfg = configparser.ConfigParser()
cfg.read("test.cfg",encoding="utf-8")
删除分区
cfg.remove_section("新分区")
删除某个分区的选项
cfg.remove_option("mysql","port")
判断是否存在某个分区
print(cfg.has_section("mysql"))
判断是否存在某个选项
print(cfg.has_option("mysql","username"))
with open("test.cfg","wt",encoding="UTF-8") as f:
cfg.write(f)
作为配置文件 最常用的操作就是读取 很少会做修改
总结: read读取配置文件
add_section 添加分区
set 如果没有这个选项则添加
remove_section 删除分区
remove_option 删除选项
请使用配置文件记录登录用户名和密码 下次登录时直接读取配置文件
在进行登录前 先判断是否存在用户名和密码在配置文件中
如果有则读取配置文件并登录
如果没有则正常输入用户名和密码 登录成功时将用户名和密码写入配置文件