1.os模块

os表示操作系统
该模块主要用来处理与操作系统相关的操作
最常用的文件操作
打开 读入 写入 删除 复制 重命名

os.getcwd() 获取当前执行文件所在的文件夹路径
os.chdir("dirname") 改变当前脚本工作目录
os.curdir 返回当前目录的字符串表现方式: 结果('.')
os.pardir 获取当前目录的父目录字符串名:结果('..')
os.makedirs('a/b/c') 可生成多层递归目录,如果不存在,可以自动创建中间的目录
os.mkdir('a/b/c') 生成单级目录,会把a,b当成已存在的路径,如果不存在就会报错
os.removedirs('dirname1') 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
os.rmdir('dirname') 删除单级空目录,若目录不为空则无法删除,报错;
os.listdir('dirname') 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印,\
列表里面只是文件的名称.需要手动拼接其完整路径
os.remove() 删除一个文件
# 如果要删除一个文件夹 而且文件夹不为空 ,思路是 先遍历这个文件夹中的所有文件和文件夹
# 先把里面的内容全部删除 最后再删除文件夹
有一个文件夹a,里面包含了一个a.txt的文件
path=r'E:\python-li\课堂\day19\a'
for f in os.listdir('a'):#得到的f只是字符串类型的文件名
  f_path=path+'\\'+'a.txt'#将其改为文件路径的格式
  print(f_path)
  os.remove(f_path)
os.rmdir('a')

os.rename("oldname","newname") 重命名文件/目录
os.stat('path/filename') 获取文件/目录信息
os.sep 输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/",当你的程序需要跨平台时,路径分隔符不能直接写死要从os中获取
os.linesep 输出当前平台使用的行终止符,win下为"\t\n",Linux下为"\n"
os.pathsep 输出用于分割文件路径的字符串 win下为;,Linux下为:
os.name 输出字符串指示当前使用平台。win->'nt'; Linux->'posix'
os.system("bash command") 运行shell命令(系统命令),直接显示它在执行系统指令时,也可以命令操作系统启动某个程序
os.environ 获取系统环境变量

什么时候使用os 当需要操作文件及文件夹的时候
重点放在对文件的增删改查

2.os.path模块

path翻译为路径
该模块用于处理路径
之所以用这个模块是因为python的跨平台,各平台的路径书写方式不同,所以将所有与路径相关都进行了封装

os.path.abspath(path) 返回path规范化的绝对路径,其实就是把当前文件所在的文件夹与你给的参数进行了拼接
os.path.split(path) 将path分割成目录和文件名二元组返回
os.path.dirname(path) 返回path的目录。其实就是os.path.split(path)的第一个元素
os.path.basename(path) 返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素
os.path.exists(path) 如果path存在,返回True;如果path不存在,返回False
os.path.isabs(path) 如果path是绝对路径,返回True 依据:第一个字符是不是路径分割符合,是表示绝对路径
print(os.path.isabs(r'E:\python-li\课堂\day19')) 结果:True
print(os.path.isabs(r'python-li\课堂\day19')) 结果:False
os.path.isfile(path) 如果path是一个存在的文件,返回True。否则返回False
os.path.isdir(path) 如果path是一个存在的文件夹,则返回True。否则返回False
os.path.join(path1,path2) 以当前平台的路径分隔符来进行拼接.如果有多个盘符,取得是最后一个
print(os.path.join('D:\\','a')) 结果:D:\a
print(os.path.join('D:\\','E:\\','a')) 结果:E:\a
os.path.getatime(path) 返回path所指向的文件或者目录的最后存取时间
os.path.getmtime(path) 返回path所指向的文件或者目录的最后修改时间
os.path.getsize(path) 返回path的大小

#返回规范化路径 大写变成小写,反斜杠变成正斜杠
print(os.path.normcase(r'E:\python-li\课堂/day19\os模块.py'))
结果:e:\python-li\课堂\day19\os模块.py

# 规范化路径但大写不变小写 并且 会执行里面..(用于返回上一级目录)
print(os.path.normpath(r'E:\python-li\\课堂//day19\os模块.py\..'))
结果:E:\python-li\课堂\day19
print(os.path.normpath(r'E:\python-li\\课堂\day19\os模块.py\..\..'))
结果:E:\python-li\课堂

#获取项目根目录
import sys,os
sys.path.append(os.path.dirname(os.path.dirname(__file__))

总结:主要处理路径 不会关系路径是否存在 只是做拼接 剪切 转换等等操作
通常是与os一起使用
优点: 用它处理的路径是可以跨平台的

3.subprocess模块

# '''
# subprocess 翻译为子进程
# 进程指的是正在运行的程序
# 子进程 是有另一个正在运行的程序启动的程序 例如:qq聊天 点击了一个连接 打开了浏览器 那么浏览器称之为qq的子进程
# 为什么使用子进程?
# 当我们有一个任务需要处理 而自己的程序无法处理 所以需要开启另一个程序
# 在python中想要获取所有的进程(任务列表)信息
# '''
# import os
# os.system(r"F:\QQ2016\Bin\QQScLauncher.exe")
# os.system('dir')
#它在执行系统指令时,也可以命令操作系统启动某个程序
#os.system在执行时 直接把结果输出到了控制台 如果我们要获取执行的结果就无能为力了
#subprocess不仅可以启动子进程,还能与子进程进行数据交互

import subprocess
#dir 表示要执行命令
#shell 表示dir是一个命令
#stout 指定输出的管道
#管道是什么? 相当于生活中的水管 从一个地方流到另一个地方
#在程序中,数据相当于水 管道的作用,就从一个进程中把数据输到另一个进程
#本质是读写同一个文件
# p = subprocess.Popen('dir',shell=True,stdout=subprocess.PIPE)
# print(p.stdout.read())
#读一次指针到达文件的末尾,再次读就没有数据

#启动一个tasklist子进程,指定输出结果到管道中
p1=subprocess.Popen('tasklist',shell=True,stdout=subprocess.PIPE)
#启动一个findstr的子程序,将p1进程的结果作为p2进程输入
p2=subprocess.Popen('findstr cmd', #要执行的指令
          shell=True, #第一个参数是否是一个指令
          stdin=p1.stdout, #指定输入管道
          stdout=subprocess.PIPE, #指定输出管道
          stderr=subprocess.PIPE)#表示错误管道,当进程执行出错时,可以在错误管道中获取结果
#读取p2进程的结果
print(p2.stdout.read())
print(p2.stderr.read().decode('GBK'))

#总结:当你需要在python中启动一个子进程,并且它进行数据交互时就是用subprocess
#如果不需要数据交互可以使用 os.system

4.configparser模块

configparser,翻译为配置解析,很显然,它是用来解析配置文件的
何为配置文件?
用于编写程序的配置信息的文件
何为配置信息?
为了提高程序的扩展性,我们会把一些程序中需要用到的值交给用户来确定,比如迅雷的下载目录,同时下载数,qq的提示音等.
作为配置信息的数据,应满足两个条件
1.数据的值不是固定的
2.可以由用户来指定
例如:我们做一个登录功能,为了方便使用我们可以将用户的用户名密码写到配置文件中,可以不需要内次都输入

配置文件编写格式
配置文件中只允许出现两种类型的数据
第一种 section分区 方括号中十分区的名称 例如[ATM]
第二种 option选项 名称=值
注意:
不能出现重复的分区名
同一分区下不能有相同的选项名

在test.cfg中:
#这是一个section(分区)
[mysql]
#这是一个option(选项)
username = henry
password = 123
lock = false
#注意分区名不能重复
#同一个分区下 不能有重复option
[django]

在configparser模块中:
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')
print(password)
print(type(password))

lock=cfg.getboolean('mysql','lock')
print(type(lock))
print(lock)

#以下三个类型
cfg.getfloat()
cfg.getint()
cfg.getboolean()

#读取配置信息 两步
1.读取某个配置文件
2.调用get函数

configparser的增加修改删除

#修改
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)

#增加
import configparser
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)

#删除
import configparser
cfg=configparser.ConfigParser()
cfg.read('test.cfg',encoding='utf-8')
#删除分区
cfg.remove_section('新分区')
#删除某分区的选项
cfg.remove_option('mysql','port')
with open('test.cfg','wt',encoding='utf-8') as f :
cfg.write(f)

#判断是否存在某个分区
print(cfg.has_section('mysql'))
#判断是否存在某个选项
print(cfg.has_option('mysql','username'))

#作为配置文件 最常用的操作就是读取配置信息 很少会做修改
#总结:
read读取配置文件注意要写encoding
add_section添加新分区
set 如果没有这个选项则添加,有则修改
remove_section 删除分区
remove_option 删除选项

5.shutil模块

shutil模块是一个工具包,封装了文件高级操作,让你操作更方便

功能与os有些重叠,os只能帮你处理文件是否存在,路径是否正确等,无法直接完成copy等操作,而shutil提供了压缩与解压缩
import shutil
#copy文件
shutil.copyfile(r'E:\python-li\课堂\day19\os模块.py',\
      r'E:\python-li\课堂\day19\os模块2.py')
#压缩文件 支持的格式zip 和tar
shutil.make_archive('day19','zip',r'E:\python-li\课堂')
shutil.make_archive('os.path','tar',r'E:\python-li\课堂\day19')
#解压缩
shutil.unpack_archive(r'E:\python-li\课堂\day19\day19.zip',
          r'E:\python-li\课堂\day19\day19\解压的文件夹.zip'
          r'zip')
总结:拷贝文件,压缩解压缩文件
make_archive 中的第四个参数 base_dir 也是用来指定要压缩的路径,与root_dir的区别
#root_dir 仅仅压缩指定的路径下的内容
#base_dir 会将指定的路径下的内容 与其完整的文件层级一并压缩
#当指定base_dir时root_dir不生效

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

  1. 常用模块:hashlib,subprocess,configparser。

    一  hashlib模块 那么我们前面学习数据类型的时候,也讲了hash,可变类型不可hash:不可变类型可hash. 我们知道hash是一种算法,接收传入的内容经过运算之后得到一个hash值,我们可 ...

  2. 17 - 路径操作-shutil模块

    目录 1 路径操作 1.1 os.path模块 1.2 pathlib模块 1.2.1 目录操作 1.2.2 文件操作 1.3 os 模块 2 shutil模块 2.1 copy复制 2.2 rm删除 ...

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

    一.os模块 os指的是操作系统 该模块主要用于处理与操作系统相关的操作,常用的是文件操作(读.写.删.复制.重命名). os.getcwd()  获取当前文件所在的文件夹路径 os.chdir()  ...

  4. python 关于操作文件的相关模块(os,sys,shutil,subprocess,configparser)

    一:os模块 os模块提供了许多允许你程序与操作系统直接交互的功能 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname&quo ...

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

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

  6. Python time、datetime、os、random、sys、hashlib、json、shutil、logging、paramiko、subprocess、ConfigParser、xml、shelve模块的使用

    文章目录: 1. time & datetime模块 2. os模块 3. random模块 4. sys模块 5. hashlib模块 6. json模块 7. shutil模块 8. lo ...

  7. python关于操作文件的相关模块(os,sys,shutil,subprocess,configparser)

    一:os模块 os模块提供了许多允许你程序与操作系统直接交互的功能 功能 说明 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirna ...

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

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

  9. Python第十一天 异常处理 glob模块和shlex模块 打开外部程序和subprocess模块 subprocess类 Pipe管道 operator模块 sorted函数 os模块 hashlib模块 platform模块 csv模块

    Python第十一天    异常处理  glob模块和shlex模块    打开外部程序和subprocess模块  subprocess类  Pipe管道  operator模块   sorted函 ...

随机推荐

  1. (已解决) eclipse提示报错"serializing cdt project settings"解决方案

    最近在使用eclipse作为cocos2dx的交叉编译工具.但是某天突然相关工程打不开,打开eclipse直接提示 “serializing cdt project settings” has enc ...

  2. 答案在哪里?action config/Interceptor/class/servlet

    项目已提测,这两天我们都集中精力梳理外包团队给我司研发的这个三方支付系统的代码逻辑.今天下午爱琴海会议室,开发组里一同学分享他对支付结果回调的梳理成果. 支付结果回调的整体时序是:支付渠道方处理完用户 ...

  3. css 清除一些默认的设置

    一.input标签的placeholder的设置 input::-webkit-input-placeholder{ /*WebKit browsers*/ //重置样式 } input::-moz- ...

  4. 集体干死java 在启动.sh

    #!/bin/bash#reboot .jar#author wangdonghuipid=`ps -ef |grep java |awk '{print $2}'`echo $pidecho'--- ...

  5. gedit emacs

    emacs常用操作: 1)C-g:退出当前命令 2)C-x C-f:搜索文件打开 3)C-s:向前搜索 C-r:向后搜索 4)C-x 2:水平分割窗口 C-x 3:竖直分割窗口 5)C-x o:切换窗 ...

  6. Oil Deposits HDU 1241

    The GeoSurvComp geologic survey company is responsible for detecting underground oil deposits. GeoSu ...

  7. kali linux主题下载

    主题下载网站 https://www.gnome-look.org/ 下载好安装包后解压 将文件夹移动到 usr/share/theme/ 下 mv download ../usr/share/the ...

  8. sitecore系统教程之媒体库

    您可以管理媒体库中的所有媒体项目,例如要嵌入网页的图像或供访问者下载的图像.媒体库包含所有媒体项目,例如图像,文档,视频和音频文件. 在媒体库中,您可以: 将所有媒体文件保存在一个位置,并将其组织在与 ...

  9. GCD(III)

    GCD 线程间的通信 在iOS开发过程中,我们一般在主线程里边进行UI刷新,例如:点击.滚动.拖拽等事件.我们通常把一些耗时的操作放在其他线程,比如说图片下载.文件上传等耗时操作.而当我们有时候在其他 ...

  10. python pprint

    使用 pprint 模块 pprint 模块( pretty printer ) 用于打印 Python 数据结构. 当你在命令行下打印特定数据结构时你会发现它很有用(输出格式比较整齐, 便于阅读). ...