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

二.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",
                    "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

时间: 2024-09-30 07:59:34

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

Day26:configparser、subprocess模块

一.configparser模块 该模块适用于配置文件的格式与windows ini文件类似,可以包含一个或多个节(section),每个节可以有多个参数(键=值). 1.创建文件 一般软件的常见文档格式如下: [DEFAULT] ServerAliveInterval = 45 Compression = yes CompressionLevel = 9 ForwardX11 = yes [bitbucket.org] User = hg [topsecret.server.com] Port

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

json & pickle Python中用于序列化的两个模块 json     用于[字符串]和 [python基本数据类型] 间进行转换 pickle   用于[python特有的类型] 和 [python基本数据类型]间进行转换 Json模块提供了四个功能:dumps.dump.loads.load 1.dumps序列化和loads反序列化 dumps()序列化 import json #导入json模块 info = { 'name':"zhangqigao", &qu

8.模块介绍 time &datetime模块 random os sys shutil json & picle shelve xml处理 yaml处理 configparser hashlib subprocess logging模块 re正则表达式

本节大纲: 模块介绍 time &datetime模块 random os sys shutil json & picle shelve xml处理 yaml处理 configparser hashlib subprocess logging模块 re正则表达式 模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才能完成(函数又可以在不同的.p

python---基础知识回顾(四)(模块sys,os,random,hashlib,re,json,xml,shutil,configparser,logging,datetime,time,集合,堆,双端队列,其他)

前提:dir,__all__,help,__doc__,__file__ dir:可以用来查看模块中的所有特性(函数,类,变量等) >>> import copy >>> dir(copy) ['Error', 'PyStringMap', '_EmptyClass', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package_

Python time、datetime、os、random、sys、hashlib、json、shutil、logging、paramiko模块的使用

1.time & datetime模块 #_*_coding:utf-8_*_ import time import datetime print(time.clock()) #返回处理器时间,3.3开始已废弃 print(time.process_time()) #返回处理器时间,3.3开始已废弃 print(time.time()) #返回当前系统时间戳 print(time.ctime()) #输出Tue Jan 26 18:23:48 2016 ,当前系统时间 print(time.ct

python模块之os和os.path模块

1.os模块os.listdir(dirname) 列出dirname下的目录和文件os.getcwd()函数得到当前工作目录,即当前Python脚本工作的目录路径.os.getenv()和os.putenv()函数分别用来读取和设置环境变量.os.curdir:返回但前目录(’.') os.chdir(dirname):改变工作目录到dirnameos.sep 可以取代操作系统特定的路径分割符.os.name字符串指示你正在使用的平台.比如对于Windows,它是’nt’,而对于Linux/U

python 常用模块 time random os模块 sys模块 json & pickle shelve模块 xml模块 configparser hashlib subprocess logging re正则

python 常用模块 time random os模块 sys模块 json & pickle shelve模块 xml模块 configparser hashlib  subprocess logging re正则 转自老男孩老师Yuan:http://www.cnblogs.com/yuanchenqi/articles/5732581.html 模块&包(* * * * *) 模块(modue)的概念: 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,

python-时间模块,random、os、sys、shutil、json和pickle模块

一.time与datetime模块 time模块: 时间戳:表示的是从1970年1月1日00:00:00开始按秒计算的偏移量,返回类型为float类型 格式化时间字符串(Format String) 结构化的时间(struct_time):struct_time元组共有9个元素(年月日时分秒,一年中的第几周,一年中的第几天,夏令时) # print(time.time())#1533962144.060534 # print(time.localtime())#time.struct_time(

os模块 os.stat('path/filename') os.path.dirname(path) os.path.exists(path)  os.path.join(path1[, path2[, ...]])

提供对操作系统进行调用的接口 1 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 2 os.chdir("dirname")  改变当前脚本工作目录:相当于shell下cd 3 os.curdir  返回当前目录: ('.') 4 os.pardir  获取当前目录的父目录字符串名:('..') 5 os.makedirs('dirname1/dirname2')    可生成多层递归目录 6 os.removedirs('dirname1')    若