os模块

Posted robert-zhou

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了os模块相关的知识,希望对你有一定的参考价值。

shelve
open打开文件,类似字典
用于序列化,序列化的中间格式,不能跨平台

sys
跟解释器相关的
sys.argv 获取调用解释器传递的参数
sys.path

os

os operation system
操作系统
该模块处理与操作系统相关的操作
最常用的是文件操作
打开,读取,写入,删除,复制,重命名
os.getcwd()获取当前工作目录,当前执行文件所在文件夹路径
os.chdir 改变当前脚本工作目录
os.makedirs可创建多层目录
创建多级目录,可以自动创建中间的目录,
os.makedirs("a/b/c")已存在报错
创建单个文件夹,会把c1,a1当做已存在路径
os.mkdir("c1/a1/a")
os.rmdir("a")必须保证文件夹为空
os.removedirs("c")c中为空,则上层为空的话一并删除
os.remove()删除一个文件
os.sep获取当前系统的路径分隔符
os.linesep获取当前系统的换行符
os.name获取当前操作系统
os.system执行系统命令
os.envion操作系统环境变量
什么时候使用os
当需要操作文件及文件夹的时候
重点放在对文件的增删改查


os.path
path 翻译为路径
该模块用于处理路径
之所以有这个模块,是因为python是跨平台的,各平台的路径书写方式不同,所以将所有与路径相关都进行了封装,使用了path后,你的程序就是夸平台的,不会因为路径而产生错误
os.path.abspath()返回绝对路径
文件不存在也会拼接
把当前执行文件所在文件夹与你给的参数进行拼接
os.path.split
将路径分隔为文件夹和文件名
实际就是将最后一部分切割
os.path.dirname
返回上一级文件夹
os.path.basename
返回文件名称
os.path.exists()
如果path存在返回True,不存在返回False
os.path.isabs
是否为绝对路径
os.path.isfile(path)
是否是文件
os.path.isdir()
是否是文件夹
os.path.join
拼接
如果有多个盘符,取最近的那一个
os.path.getsize
获取文件大小
os.path.normcase
左右斜杠共存时会按照操作系统统一
os.path.normpath
实现..的功能
总结:主要处理路径,不会关心路径是否存在,只是做拼接,剪切,转换等等操作
通常是与os一起使用
优点:用它处理的路径是可以跨平台的
subprocess
子进程,进程就是一个正在运行的程序
tasklist | findstr cmd
子进程是由另一个正在运行的程序启动的程序,例如qq聊天,点击了一下链接,打开了浏览器,那么浏览器就称之为qq的子进程
为什么使用子进程
当我们有一个任务需要处理,而自己的程序无法处理,所以需要开启另一个程序
在python想要获取所有的进程信息
os.system在执行系统指令时也可以命令操作系统启动某个程序
0 正常执行
os.system在执行时直接把结果输出到控制台,这并不是我们想要的结果
subprocess不仅可以启动子进程,还能与子进程进行数据交互
import subprocess
#dir 表示要执行的命令
#shell 表示dir是一个命令
#stdout 指定输出管道
#管道相当于生活中的水管,水可以通过管道从一个地方流到另一个地方,在程序中,数据相当于水,管道的作用,就从一个进程中把数据传输到另一个进程里,本质上是读写同一个文件
p = subprocess.Popen("dir",shell = True ,stdout = subprocess.PIPE)
print(p.stdout.read())
p1 = suprocess.Popen("tasklist",shell= True,stdout = subprocess.PIPE)
p2 = subprocess.Popen("findstr cmd",shell = True, stdin = p1.stdout, stdout = subprocess.PIPE)
在python中启动一个子进程,并且与它进行数据交互时就使用subprocess,如果不需要数据交互,os.system
stderr = subprocess.PIPE,当进程出错时,存储错误信息
configparser
配置解析,解析配置文件的
1.数据的值不是固定的
2.可以由用户来指定的
section 标题
option 选项
[mysql]#section
username = jack#option
password = 123
默认都是字符串
注意:分区名称不能重复
    同一个分区下不能有重复option
import configparser
创建一个配置文件解析器
cfg = configpatser.ConfigParser()
读取名为test.cfg的文件
cfg.read("test.cfg",encoding = "utf8")
读取分区:
cfg.sections()#存为列表
获取某个分区下的某个选项,第一个参数分区名,第二个选项名
password = cfg.getint("mysql","password")
cfg.getboolean
cfg.getfloat
读取配置信息分两步:
1.读取某个配置文件
2.调用get函数
configparser增加修改删除
import configparser
cfg = configparser.ConfigParser
cfg.read("test.cfg",encoding="utf8")
cfg.set("mysql","lock","True")
with open("test.cfg","wt",encoding = "utf8")as f:
    cfg.write(f)    
cfg.add_section("dango")
cfg.remove_section("dango")
cfg.remove_option("mysql","lock")
cfg.has_section
cfg.has_option
import shutil
shutil 模块是一个工具包,封装了文件的高级操作,让你操作起来更方便
提供了压缩与解压缩
#压缩文件,支持的格式zip,tar
shutil.make_archive("待压缩文件名","格式","文件存哪")
#解压
shutil.unpack_archive
("待解压文件”,“格式","解压后放哪")





以上是关于os模块的主要内容,如果未能解决你的问题,请参考以下文章

如何有条件地将 C 代码片段编译到我的 Perl 模块?

python os 模块

vscode代码片段建议bug

java代码在片段活动中不起作用

Python OS模块

python小知识片段