Python模块之OS,subprocess
1.os 模块
简述: os 表示操作系统
该模块主要用来处理与系统相关操作
最常用的是文件操作
打开 获取 写入 删除 复制 重命名
常用操作
os.getcwd() : 返回当前文件所在文件夹路径
os.chdir() : 修改当前工作目录
os.curdir(): 获取当前目录的字符串表现方式
os.makedir():创建多级目录,如果中间目录不存在会自动创建
os.mkdir():创建单级目录
os.rmdir():删除文件夹(仅在文件夹为空时才能删除)
os.stat():获取一个生成器类型存放文件的各种信息
os.sep():获取当前路径分隔符(各平台分隔符不同)
os.linesep():获取换行符
os.system():执行系统命令
总结:什么时候用os模块
需要操作文件及文件夹的时候
重点放在对文件的增删查改
os.path(重要)
概述:path 翻译为路径,即该模块就是用于处理路径的
用途:p程序在跨平台使用时,各平台的路径写法不同,所以与要用到本模块进行处理封装,保证以后的跨平台使用不会因为路劲产生bug。
模块的用法
os.path.abspath() :返回当前文件的绝对路径
os.path.split():将路径分割成文件夹和文件名
os.path.exist():判断一个路径是否存在,存在返归True,不存在返回False
os.path.isabs():判断绝对路径和相对路径,判断本则是路径是否是“\”开头
os.path.isfile():判断是否是一个存在的文件夹
os.path.isdir():存在并且是一个文件夹
os.path.join("str"): 以当前平台分割符对路径字符串进行拼接,当存在多个盘符时,默认以最后一个盘符开始进行拼接。
os.path.getsize():获取文件的大小(字节)
os.path.getatime(path):获取最后存取时间
os.path.getmtime(path):获取最后修改时间
规范化路径:
os.path.normcase(path):大写变小写,斜杆变为当前操作系统平台识别斜杠
os.path.normpath(path):斜杠规范化,识别路径中的"..",返回上一级目录
2.subprocess模块
定义:subprocess模块称之为子进程,进程指的是是一个正在运行的程序
为什么要用子进程:
当有一个任务需要处理,但当前程序无法处理,则需要通过当前程序调用另外一个程序进行处理,则这另外一个程序就称之为当前程序的子进程
如何用subprocess模块
subprocess模块可以命令操作系统打开另外一个子进程,这类功能类似于os模块下的os.system()函数,os.system只能把执行结果输出到控制台,无法返回执行结果,那subprocess不仅可以启动子进程,还能与子进程进行数据交互!
import subprocess
# 命令操作系系统调用一条命令,此结果无异于os.system()
p = subprocess.Popen('dir', # 'dir' 系统命令
shell=True) # shell=True标明这是一个系统命令
print(p)
# 为了让subprocess能进行数据交互,我们还需要设置另外一项:管道类型
# 管道:就是将数据从一个程序传到另一个程序,本质上是读写同一个文件
# stdin :表示输入人交给子进程的数据
# stdout :表示子进程返回的数据
# stderr :表示子进程发送的错误信息
p1 = subprocess.Popen('dir',
shell=True,
stdout=subprocess.PIPE)
print(p1.stdout.read().decode('gbk'))
# 将p1的输出结果作为p2的输入
p2 = subprocess.Popen('dir', # 系统命令
shell=True, # 向程序标明这是系统命令而不是字符串
stdin=p1.stdout, # 将p1的数据传入
stdout=subprocess.PIPE, # p2返回的数据
stderr=subprocess.PIPE # 当进程执行错误时输出信息
)
print(p2.stdout.read().decode('gbk')) # windows 系统默认gbk编码总结:当你需要在python中启动一个子进程 并且它进行数据交互时就使用subprocess
如果不需要数据交互,可以使用os.system
最新文章
- 简单编写Makefile
- C# IComparable接口、IComparer接口和CompareTo(Object x)方法、Compare()方法
- php curl 例子
- Java IO流
- 在代码中调用gdb
- [C语言 - 12] Union联合
- win7如何完全写在iis
- super在构造函数中的运用
- ZOJ 1025 Wooden Sticks
- 《经久不衰的Spring框架:@ResponseBody 中文乱码》
- vue中多个input绑定enter按键事件
- python已安装了DNS处理模块,执行时却报错ImportError
- 论文速读(Jiaming Liu——【2019】Detecting Text in the Wild with Deep Character Embedding Network )
- problem: vue中获取动态元素高度
- [转载]asp.net中,<;%#%>;,<;%=%>;和<;%%>;分别是什么意思,有什么区别
- threejs纹理
- nodejs图片总结
- JS重要的内置对象
- rabbitmq实现一台服务器同时给所有的consumer发送消息(tp框架)(第四篇)
- zabbix系列之六——安装后配置二Items
热门文章
- 109 Convert Sorted List to Binary Search Tree 有序链表转换二叉搜索树
- On the way to the park Gym - 101147I 几何
- eclipse修改xml配置文件tomcat不能同步问题
- 死磕 java并发包之AtomicStampedReference源码分析(ABA问题详解)
- JMeter3.2入门使用教程
- LR中订单流程脚本2
- JS 操作对象 事件 样式
- 洛谷 P1376 机器工厂
- dataSource&#39; defined in class path resource [org/springframework/boot/autocon
- 并查集+思维——Destroying Array