os模块、os.path模块、shutil模块、configparser模块、subprocess模块

一.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  当需要操作文件 及文件夹的时候
# 重点放在对文件的增删改查
View Code

二.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 一起使用
# 优点: 用它处理的路径是可以跨平台的
View Code

三.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
View Code

四.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函数
View Code
#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文件  压缩文件时 使用

 

转载于:https://www.cnblogs.com/wangke0917/p/10096890.html

Python核心模块全解析:从时间处理到系统交互 Python标准库提供了丰富的内置模块,涵盖时间处理、系统交互、数据序列化等关键功能。时间处理模块(time/datetime)基于Unix时间戳和结构化时间概念,支持时区转换和日期计算;系统交互模块(os/sys/subprocess)通过封装操作系统API实现跨平台文件操作和进程管理。这些模块遵循Python的'内置电池'哲学,为开发者提供了开箱即用的高效工具。在实际工程中,合理使用这些模块可以显著提升开发效率,常见应用场景包括日志记录、自动化运维、数据处理等。本文重点解析了time、datetime、 阅读详情

相关推荐

Python常用标准库模块详解与应用实践

Python标准库是Python开发者的核心工具箱,提供了开箱即用的模块化功能。从基础的时间处理(time/datetime)到系统交互(os/sys),再到数据序列化(json/xml),这些模块遵循Python的'内置电池'哲学。理解模块设计原理能提升代码效率,如datetime模块处理复杂日期计算,json模块实现Web API数据交换,logging模块构建健壮的日志系统。实际工程中,合理组合这些模块能解决文件备份、远程管理、配置解析等常见场景,如使用shutil+hashlib实现自动化备份,pa

weixin_30598225的博客 384

python os.system()和os.popen()

python os.system()和os.popen()

快递小可的博客 4万+

Python武器库开发-常用模块configparser模块(十六)

ConfigParser模块python3中修改为configparser.这个模块定义了一个ConfigParser类,该模块的作用就是用来读取配置文件的,使用模块中的RawConfigParser()、ConfigParser()、 SafeConfigParser()这三个方法,创建一个对象使用对象的方法对指定的配置文件做增删改查的操作。一般做自动化测试的时候,会使用到这个模块,用来操作配置文件(ini文件)封装一些常量。比如数据库、邮件、用户名密码、项目常量等等。

把自己活成一道光,因为你不知道,谁会借着你的光,走出了黑暗。请保持心中的善良,因为你不知道,谁会借着你的善良,走出了绝望。请保持你心中的信仰,因为你不知道,谁会借着你的信仰,走出了迷茫。请相信自己的力量,因为你不知道,谁会因为相信你,开始相信了自己.... 452

Python模块学习:subprocess模块详解

args: 要执行的shell命令,默认应该是一个字符串序列,如[‘df’, ‘-Th’]或(‘df’, ‘-Th’),也可以是一个字符串,如’df -Th’,但是此时需要把shell参数的值置为True。shell: 如果shell为True,那么指定的命令将通过shell执行。如果我们需要访问某些shell的特性,如管道、文件名通配符、环境变量扩展功能,这将是非常有用的。

Saki_Python的博客 2754

Python递归查找文件(os.path, fnmatch,glob)

#!/usr/bin/env python #coding=utf8 import os.path import fnmatch import glob def recursiveSearchFiles(dirPath, partFileInfo): fileList = [] pathList = glob.glob(os.path.join('\\', di...

dietan8353的博客 261

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

1.os模块 os表示操作系统模块主要用来处理与操作系统相关的操作最常用的文件操作打开 读入 写入 删除 复制 重命名 os.getcwd() 获取当前执行文件所在的文件夹路径os.chdir("dirname") 改变当前脚本工作目录os.curdir 返回当前目录的字符串表现方式: 结果('.')os.pardir 获取当前目录的父目录字符串名:结果('..')os.makedir...

weixin_30412577的博客 187

python-os模块-os.path模块-shutil模块-subprocess模块-configparser模块

文章目录一、os 模块二、os.path 模块三、shutil 模块四、subprocess 模块五、configparser 模块 一、os 模块 os 表示操作系统,该模块主要处理与操作系统相关的操作,最常用的是文件操作打开,读取,写入,删除,复制,重命名。 #当前执行文件所在的文件夹路径 print(os.getcwd()) #修改当前的工作目录 os.chdir(r"D:\Progr...

zdc45625的博客 334

configparser,os,path,shutil,subprocess模块

import configparser# 创建一个配置文件解析器cfg = configparser.ConfigParser()# 读取名为test.cfg的配置文件cfg.read("test.cfg",encoding="UTF-8")# 获取分区print(cfg.sections())# 获取某个分区下的某个选项 第一个参数分区名 第二个选项名称username = cfg.g...

weixin_30408165的博客 120

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

os 表示操作系统 os模块是与操作系统交互的一个接口 os.getcwd()获取当前工作目录,即当前python脚本工作的目录路径 os.chdir(a)改变当前脚本工作目录,相当于shell下cd os.curdir返回当前目录('.') os.pardir获取当前父目录字符串名('..') os.makedirs(a\b)可生成多层递归目录 os.removedirs(s)若目...

weixin_33728708的博客 79

Python-标准库(常用模块)

前言: 之所以为不同模块划分重要程度,是因为大家不不可能精力一直集中,也不可能一下掌握所有, 但这个并不表示重要度低的可以不用掌握 ! 你必须掌握的点是每个模块分别干什么事,今后在需要实现某些功能时能够想起来这个模块的名字,然后再去查自己的资料找对应的使用方法 一.logging模块 logging翻译为日志记录 那问题是什么是日志? 日志实际上是日记的一种,用于记录某个时间点发生了什么...

weixin_38169798的博客 384

一些牛气的模块使用解读

1.time # 导入time模块对象 import time# 重点使用对象 ''' 时间戳(timestamp):time.time() 延迟线程的运行:time.sleep(secs) (指定时间戳下的)当前时区时间:time.localtime([secs]) (指定时间戳下的)格林威治时间:time.gmtime([secs]) (指定时间元组下的)格式化时间:ti...

weixin_30647065的博客 188

Python常用模块深度解析与实战技巧

Python标准库提供了丰富的内置模块,涵盖时间处理、文件操作、系统交互等常见开发需求。时间处理模块如time和datetime支持从基础时间戳到高级日期运算,random模块实现伪随机数生成,os和sys模块提供系统级交互能力。这些模块通过封装底层功能,显著提升了开发效率,广泛应用于Web开发、数据分析、自动化脚本等领域。以datetime模块为例,它不仅能处理时区转换,还能进行精确的时间差计算,是日志系统、定时任务等场景的核心组件。合理组合这些模块可以构建出如自动化备份工具、配置管理系统等实用程序。

592

Python标准库核心模块详解与应用实践

Python标准库是开发者必须掌握的基础工具集,它提供了时间处理、文件操作、数据序列化等核心功能模块。这些模块基于Python语言特性实现,通过封装底层系统调用和算法,为开发者提供了高效、稳定的编程接口。在工程实践中,合理使用标准库能显著提升开发效率,例如使用datetime处理业务时间逻辑、利用json模块实现数据交换、通过os/sys模块管理系统资源。本文重点解析time/datetime时间处理模块和random随机数生成模块的工作原理,并展示它们在日志记录、测试数据生成等典型场景中的应用技巧。掌握这

anjueci1221的博客 483

Python标准库模块实战:时间处理与系统交互

Python标准库是开发者提升效率的核心工具集,其中时间处理与系统交互模块尤为关键。时间处理涉及time和datetime模块,前者提供基础时间戳功能,后者支持完整的日期时间运算与时区处理。系统交互模块os、sys和shutil,实现了跨平台的文件操作和运行时控制。这些模块在Web开发、自动化脚本和数据分析等场景广泛应用,例如使用datetime进行日志时间戳处理,或通过os.path实现跨平台路径管理。掌握这些模块能有效解决时区陷阱、路径兼容性等工程实践问题,本文通过商业项目案例展示time模块高精度测

weixin_34396103的博客 391

Python常用模块实战:时间处理与系统交互技巧

Python内置模块是开发者的瑞士军刀,涵盖了时间处理、文件操作等核心功能。time和datetime模块提供了从基础时间戳获取到复杂日期计算的全套解决方案,而ossubprocess模块则是系统交互的关键,支持跨平台文件操作和进程管理。这些模块通过标准化接口封装底层实现,既能提升开发效率,又能保证代码健壮性。在实际工程中,合理运用这些模块可以高效解决日志记录、配置管理、数据备份等常见场景需求,特别是在自动化脚本和系统工具开发中体现其技术价值。

weixin_34008784的博客 503

20181210(os,os.path,subprocess,configparser,shutil

1、os模块 os表示操作系统,该模块主要处理与操作系统相关的操作。最常用的是文件操作:打开,读取,删除,复制,重命名。 重点掌握增删改查的函数操作。 import os# 获取当前执行文件所在文件夹路径print(os.getcwd())输出结果:C:\Users\wangt\PycharmProjects\new\20181210 # 修改当前的工作目录(将当前文件挪到目标...

weixin_30945039的博客 132

Python常用内建模块详解与应用实践

Python标准库作为语言核心能力的重要组成部分,提供了丰富的内建模块支持日常开发需求。从数据结构处理到系统交互,这些模块基于Python的设计哲学实现了开箱即用的功能封装。以collections模块为例,其提供的defaultdict、Counter等数据结构扩展了基础类型的表达能力,通过哈希表实现高效查找,在数据处理和统计分析场景中能显著提升代码效率。datetime模块则采用面向对象方式封装时间计算逻辑,其strftime/strptime方法基于格式字符串实现时间序列化,是日志处理、定时任务等场景

weixin_33894640的博客 545
上一篇: thinkphp3.2模块名如何不区分大小写?
下一篇: Spring Cloud - Eureka /actuator/info 如何显示信息
weixin_30907523
博客等级 码龄11年 106粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值