一.os模块

os指的是操作系统

该模块主要用于处理与操作系统相关的操作,常用的是文件操作(读、写、删、复制、重命名)。

os.getcwd()  获取当前文件所在的文件夹路径

os.chdir()  修改当前工作目录

os.makedirs()  创建多级目录(不存在时,则创建)

os.mkdir()  创建单级目录

os.rmdir()  删除文件夹(文件夹为空,则删除)

os.listdir()  列出指定目录下的所有文件及子目录(存在一个列表中)

os.stat()  获取文件信息

os.sep()  获取当前系统的路径分隔符

os.system()  执行系统命令

os.environ  获取系统环境变量

os.linesep()  获取换行符

# 当前执行文件所在的文件夹路径
# print(os.getcwd()) # 修改当前的工作目录
# os.chdir(r"D:\脱产5期内容\day19") # 获取当前目录的 字符串表现方式 .
# print(os.curdir)
# 获取当前目录的 字符串表现方式 ..
# print(os.pardir) # 创建多级目录 可以自动创建中间的目录 如果不存在
# os.makedirs("a/b/c")
# 只能创建单级目录 会把c1和a1当成已存在的路径
# os.mkdir("c1/a1/b1") # 删除文件夹 必须保证文件夹是空的 才能删除
# os.rmdir("a") # 如果要删除一个文件夹 而且文件夹不为空 ,思路是 先遍历这个文件夹中的所有文件 和文件夹
# 先把里面的内容全部删除 最后再删除文件夹 # os.rmdir("b") # 要删除的文件路径
# path = r"D:\脱产5期内容\day19\b"
#
# for f in os.listdir("b"):
# f_path = path + "\\" + f
# os.remove(f_path)
#
# os.rmdir("b")
#注意遍历删除文件时 listdir 得到的是文件名称 需要手动拼接完整路径 # print(os.stat("os模块.py")) # 获取当前的路径分割符 当你的程序要跨平台时 路径分隔符不能直接写死 要从os中获取,
# 因为每个平台不同
# print(os.sep) # 获取换行符
# print(os.linesep) # 执行系统命令
# print(os.system("dir")) # print(os.environ) # 什么时候使用os 当需要操作文件 及文件夹的时候
# 重点放在对文件的增删改查

二.os.path模块

该模块用于处理路径,由于各平台的路径书写方式不同,所以用path进行封装,实现跨平台。

os.path.abspath() 返回绝对路径(把当前执行文件所在的文件夹与括号内的参数进行拼接)

os.path.split()  将路径分隔为文件夹和文件名(存成元组)

os.path.dirname()  获取路径中文件夹路径

os.path.basename()  获取路径中的文件名

os.path.exists()  判断文件路径是否存在

os.path.isabs()  判断是否是绝对路径(依据是:第一个字符是路径分隔符,则为绝对路径,反之,则为相对路径)

os.path.isfile()  判断路径是否存在一个文件

os.path.isdir()  判断路径是否存在一个文件夹

os.path.join()  以当前平台的路径分隔符,拼接路径

os.path.getsize()  获取文件大小

os.path.getstime()  获取最后存取时间

os.path.getmtime()  获取最后修改时间

os.path.normcase()  规范化路径(大写变小写,‘/’变‘\’)

os.path.normpath()  规范化路径(‘/’变'\',且会执行里面的‘..’(返回上一级))

# 返回绝对路径  其实就是把当前执行文件所在的文件夹 与你给的参数做了拼接
# print(os.path.abspath("path模块.py")) # 将路径分割为文件夹和文件名
# print(os.path.split(r"D:\脱产5期内容\day19\path模块")) # 获取路径中的文件夹路径
# print(os.path.dirname(r"D:\脱产5期内容\day19\path模块\path模块.py"))
# 获取路径中的文件名称
# print(os.path.basename(r"D:\脱产5期内容\day19\path模块\path模块.py")) # 判断一个路径是否存在
# print(os.path.exists(r"D:\脱产5期内容\day19\path模块\path模块.py")) # 判断是否是绝对路径 依据是 第一个字符 是不是路径分割符合 是表示绝对路径
# print(os.path.isabs(r"脱产5期内容\day19path模块")) # 不是一个文件 必然是一个文件夹
# 判断路径是否是一个文件
# print(os.path.isfile(r"D:\脱产5期内容\day19\path模块\path模块.py")) # # 判断路径是否是一个文件夹
# print(os.path.isdir(r"D:\脱产5期内容\day19\path模块\path模块.py")) # # 以当前平台的路径分割符来拼接路径 如果有多个盘符 取得是最后一个
# print(os.path.join("D:\\","A:\\","b")) # 获取文件大小
# print(os.path.getsize(r"D:\脱产5期内容\day19\path模块\path模块.py")) # 获取最后存取时间
# print(os.path.getatime(r"D:\脱产5期内容\day19\path模块\path模块.py"))
#
# # 获取最后修改时间
# print(os.path.getmtime(r"D:\脱产5期内容\day19\path模块\path模块.py")) # 返回规范化路径 大写变成小写,反斜杠变成正斜杠
print(os.path.normcase(r"D:/脱产5期内容/day19/path模块/path模块.py")) # 把反斜杠 转为正斜杠 并且 会执行里面..(用于返回上一级目录)
print(os.path.normpath(r"D:\脱产5期内容/day19\path模块\..\..\..\..")) # 总结:主要处理路径 不会关系路径是否存在 只是 做拼接 剪切 转换等等操作
# 通常是与os 一起使用
# 优点: 用它处理的路径是可以跨平台的

三.subprocess模块

subprocess指的是子进程,进程指的是一个正在运行的程序,而子进程指的是由另一个正在运行的程序启动的程序。

subprocess不仅可以启动子进程,还可以与子进程进行数据交互。

应用场景:当我们有一个任务需要处理,而自己的程序无法处理时,这时就需要开启另一个程序。

# import os
# # os.system(r'"D:\Program Files (x86)\Tencent\QQ\Bin\QQScLauncher.exe"')
# res = os.system("dir")
# print(res)
# os.system 在执行系统指令时 也可以命令操作系统启动某个程序 # os.system在执行时 直接把结果输出到了 控制台 如果我们要获取执行的结果 就无能为力了 # subprocess 不仅可以启动子进程 还能与子进程进行数据交互 import subprocess
# dir 表示要执行命令
# shell 表示dir是一个命令
# stdout指定输出管道
# 管道是什么? 相当于生活中的水管 水可以通过管道 从一个地方流到另一个地方
# 在程序中 数据相当于水 管道的作用,就从一个进程中把数据传输到另一个进程
# 本质上是读写同一个文件 # p = subprocess.Popen("dir",shell=True,stdout=subprocess.PIPE)
# print(p.stdout.read())
# 上面代码是 启动了一个dir子进程 并将结果输出到指定管道 # 启动一个tasklist子进程 指定输出结果到管道中
p1 = subprocess.Popen("tasklist",shell=True,stdout=subprocess.PIPE) # 启动一个findstr的子进程 将p1进程的结果作为p2进程输入
p2 = subprocess.Popen("findstr cmd", # 要执行的指令
shell=False,# 第一个参数是否是一个指令
stdin=p1.stdout, # 指定输入管道
stdout=subprocess.PIPE,#指定输出管道
stderr=subprocess.PIPE) # 表示错误管道 当进程执行出错时 可以在错误管道中获取结果 # 读取p2进程的结果
print(p2.stdout.read())
print(p2.stderr.read().decode("GBK")) # 总结 当你需要在python中启动一个子进程 并且它进行数据交互时就使用subprocess
# 如果不需要数据交互 可以使用os.system

四.configparser模块

configparser:解析配置文件

#配置文件 text.cfg

[mysql]
username = jack
password = 123
lock = true [django] #configparser模块.py import configparser # 创建一个配置文件解析器
cfg = configparser.ConfigParser()
# 读取名为test.cfg的配置文件
cfg.read("test.cfg",encoding="UTF-8") # 获取分区
print(cfg.sections()) # 获取某个分区下的某个选项 第一个参数分区名 第二个选项名称
username = cfg.get("mysql","username")
print(username)
print(type(username)) password = cfg.get("mysql","password") # lock = cfg.get("mysql","lock")
# print(lock)
# print(type(lock))
#
# print(bool(lock)) #
# lock = cfg.getboolean("mysql","lock")
# print(type(lock))
# print(lock) # 以下三个函数是帮你封装了 类型转换
# cfg.getfloat()
# cfg.getint()
# cfg.getboolean() # 读取配置信息 两步
# 1.读取某个配置文件
# 2.调用get函数
#configparser增加、修改、删除.py

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 删除选项

configparser增删改

五.shutil模块

文件的高级操作,还有压缩与解压。

shutli.copyfileobj(fsrc,fdst[,length])  将文件内容拷贝到另一个文件中

shutil.copyfile(src,dst)  拷贝文件(目标文件无需存在)

shutil.copymode(src,dst)  仅拷贝文件权限

shutil.copystat(src,dst)  仅拷贝文件的状态信息(mode bits,atime,mtime,flags)

shutil.copy(src,dst)  拷贝文件和权限

shutil.copy2(src,dst)  拷贝文件和状态信息

shutil.ignore_patterns(*patterns)

shutil.copytree(src, dst, symlinks=False, ignore=None)   递归的去拷贝文件夹

shutil.move(src, dst)
递归的去移动文件,它类似mv命令,其实就是重命名

import shutil
# shutil.copyfile(r"D:\脱产5期内容\day19\shutil模块\shutil模块.py",r"D:\脱产5期内容\day19\shutil模块\shutil模块.py2") # 压缩文件 支持的格式 zip 和tar
shutil.make_archive("shutil模块",
"zip",
r"D:\脱产5期内容\day19", #root_dir 仅仅压缩指定路径下的内容
"D:\脱产5期内容\day19\这是压缩后的文件") # # 解压缩
# shutil.unpack_archive(r"shutil模块.zip",
# r"D:\脱产5期内容\day19\shutil模块\解压的文件夹",
# r"zip") # 总结: shutil模块在 copy文件 压缩文件时 使用

os模块、os.path模块、shutil模块、configparser模块、subprocess模块的更多相关文章

  1. configparser、subprocess模块

    一.configparser模块 该模块适用于配置文件的格式与windows ini文件类似,可以包含一个或多个节(section),每个节可以有多个参数(键=值). 1.创建文件 一般软件的常见文档 ...

  2. 【python】-- json & pickle、xml、requests、hashlib、shelve、shutil、configparser、subprocess

    json & pickle Python中用于序列化的两个模块 json     用于[字符串]和 [python基本数据类型] 间进行转换 pickle   用于[python特有的类型] ...

  3. os模块,os.path模块,subprocess模块,configparser模块,shutil模块

    1.os模块 os表示操作系统该模块主要用来处理与操作系统相关的操作最常用的文件操作打开 读入 写入 删除 复制 重命名 os.getcwd() 获取当前执行文件所在的文件夹路径os.chdir(&q ...

  4. Python常用模块(logging&re&时间&random&os&sys&shutil&序列化&configparser&&hashlib)

    一. logging(日志模块) 二 .re模块 三. 时间模块 四. random模块 五. os模块 六. sys模块 七. shutil模块 八. 序列化模块(json&pickle&a ...

  5. python---基础知识回顾(四)(模块sys,os,random,hashlib,re,序列化json和pickle,xml,shutil,configparser,logging,datetime和time,其他)

    前提:dir,__all__,help,__doc__,__file__ dir:可以用来查看模块中的所有特性(函数,类,变量等) >>> import copy >>& ...

  6. PYDay10&11&12&13-常用模块:time|datetime|os|sys|pickle|json|xml|shutil|logging|paramiko、configparser、字符串格式化、py自动全局变量、生成器迭代器

    1.py文件自动创建的全局变量 print(vars()) 返回值:{'__name__': '__main__', '__package__': None, '__loader__': <_f ...

  7. python基础-7.3模块 configparser logging subprocess os.system shutil

    1. configparser模块 configparser用于处理特定格式的文件,其本质上是利用open来操作文件. 继承至2版本 ConfigParser,实现了更多智能特征,实现更有可预见性,新 ...

  8. python学习 day19 configparser模块 os模块 subprocess模块

    上周五回顾 logging 用于记录日志 四种核心角色: 生成器Logger 过滤器Filter 处理器Handler 格式化处理器 Formatter logging.info.debug 使用默认 ...

  9. day 5 模块导入、常用模块os shutil sys commands subprocess hashlib json pickle zipfile traceback random datetime

    os: os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname") 改变当前脚本工作目录:相当于shell下cd os. ...

随机推荐

  1. Distance

    1191: Distance 时间限制: 1 Sec  内存限制: 32 MB 题目描述 There is a battle field. It is a square with the side l ...

  2. C++ 内链接 外链接

    编译的时候(假如编译器是VS),是以源文件cpp文件为单位,编译成一个个的obj文件,然后再通过链接器把不同的obj文件链接起来.如果一些变量或函数的定义是内连接的话,链接器链接的时候就不会拿它们去与 ...

  3. How does exercise keep your brain young?

    Exercise may protect the brain from disease and dementia as we age, but the mechanisms behind its be ...

  4. UEditor上传自定义文件夹

    需求:使用UEditor上传时需要知道具体到哪个章节得图片,所以得根据Session中得文件重新定义 修改Handler类: public HttpSessionState Session {get; ...

  5. .net core vs2015 vs2017打开后errpr

    需要将每个项目中增加global.json  并设置sdk的版本,注意,每个类库中均需增加. { "sdk": { "version": "1.0.0 ...

  6. 清北合肥day2-day5

    day2:215这一天的题目相对比较模板化t1:50看错了数据范围求n个点到给出的点哈夫曼距离的最小值我想到的是一种非常zz的做法我们二分答案,然后判断是否在这个距离内有点但是这样前缀和不是很好维护于 ...

  7. BZOJ 3745

    题解: 分治好题 首先暴力显然rmq可以做到n^2 比较容易想到是以最值分治,这样在数据随机复杂度是nlogn,不随机还是n^2的 以最值分治只有做多与较小区间复杂度相同才是nlogn的 而这题里我们 ...

  8. python基础——高级特性

    1.切片  切片: >>> L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack'] >>> L[:3] ['Michael ...

  9. Collection接口的常用方法

    [添加功能] boolean add(Object obj); //添加一个元素. boolean addAll(Collection c); //添加一个集合的元素(在后面追加). [删除功能] v ...

  10. P2661 信息传递 二分图的最小环

    题目描述 有 nn 个同学(编号为 11 到 nn )正在玩一个信息传递的游戏.在游戏里每人都有一个固定的信息传递对象,其中,编号为 ii 的同学的信息传递对象是编号为 T_iTi​ 的同学. 游戏开 ...