python之模块(os、sys、json、subprocess)
os模块
os模块主要是与操作系统打交道。
导入os模块
import os
创建单层文件夹,路径必须要存在
os.mkdir(路径/文件夹名)
"""不写路径就是在当前目录创建文件夹"""
创建多层文件夹,路径不存在会自动创建文件夹
os.makedirs(路径/文件夹名/文件夹名...)
"""不写路径就是在当前目录创建文件夹"""
删除一层空的文件夹
os.rmdir(路径/文件夹名)
"""不写路径就是在当前目录删除文件夹"""
删除多层空文件夹,删除一层文件夹后,如果上一级的文件夹是空的,会一直删除上一级文件夹直到文件夹不为空
os.removedirs(路径/文件夹名)
"""不写路径就是在当前目录删除文件夹"""
查看某个路径下所有的文件名称
os.listdir(路径)
"""不写路径就是在当前目录"""
删除文件(无法删除文件夹)
os.remove(文件名)
"""不写路径就是在当前目录"""
重命名文件(无法重命名文件夹)
os.rename(文件名,新文件名)
"""不写路径就是在当前目录"""
返回当前路径
os.getcwd()
改变当前路径
os.chdir(路径)
返回当前执行文件所在的绝对路径
os.path.dirname(__file__) # 固定搭配
# 每嵌套一层就会往上一层路径
os.path.dirname(os.path.dirname(__file__))
返回当前执行文件自身的路径
os.path.abspath(__file__) # 固定搭配
判断文件是否存在(可以判断文件夹和文件)
os.path.exists(路径)
判断路径是否是一个文件夹
os.path.isdir(路径)
判断路径是否是一个文件
os.path.isfile(路径)
拼接成路径
os.path.join(路径1, 路径2)
"""路径2最好不要用绝对路径"""
返回文件大小(单位:字节),如果路径是文件夹,返回值为0
os.path.getsize(路径)
判断路径是否是一个文件夹
os.path.isdir(路径)
在cmd窗口执行括号内的命令,直接显示
os.system(命令)
# 如
os.system('dir') # 获取当前目录信息
在cmd窗口执行括号内的命令,获取执行结果
os.popen(命令).read()
把执行文件与所在路径分开存储在元组中
os.path.split(__file__) # 固定搭配
文件时间问题
os.path.getatime(path) # 返回path所指向的文件或者目录的最后访问时间
os.path.getmtime(path) # 返回path所指向的文件或者目录的最后修改时间

sys模块
sys模块主要是跟python解释器打交道
导入模块
import sys
以列表形式返回当前执行文件所在的sys.path
sys.path
自定义命令行操作
sys.argv
"""
在cmd窗口中执行py文件:python py文件 命令1 命令2 ...
输出:[py文件名, 命令1, 命令2, ...]
"""
sys.argv[0] # 返回py文件名
sys.argv[1] # 返回第一个命令
sys.argv[2] # 返回第二个命令
...
返回解释器版本信息
sys.version
获取平台信息
sys.platform
正常退出程序后输出内容
sys.exit(内容) # 程序正常退出才会输出
json模块
json是什么?
json是一个序列化模块,主要用于跨语言传输数据。json格式的数据是不同编程语言之间数据交互的媒介,基本上每个编程语言都能识别json格式的数据,识别的过程叫做反序列化。
json本质上是字符串类型的,在python中,它的格式与字典极其相似。
字典的数据格式:
{'username':'abc','age':18}
json数据格式:
{"username": "abc", "age": 18}
可以看到,它们的区别就在引号上,双引号是json格式数据独有的标志符号。
json模块
导入
import json
序列化:将数据转换成json格式字符串
json.dumps(要序列化的数据)
# 案例
d = {'username': 'abc', 'age': 18}
res = json.dumps(d)
print(res, type(res))
# 输出:{"username": "abc", "age": 18} <class 'str'>
反序列化:将json格式字符串转换成对应的数据类型
json.loads(要反序列化的数据)
# 案例
d = '{"username": "abc", "age": 18}'
res = json.loads(d)
print(res, type(res))
# 输出:{'username': 'abc', 'age': 18} <class 'dict'>
将数据转成json格式字符串后写入文件
json.dump(要序列化的数据, 文件名)
# 案例
d = {"username": "abc", "age": 18} # json格式数据
with open(r'a.txt','w',encoding='utf8') as f:
json.dump(d, f)
将存储json格式字符串的文件读取后转成对应的数据类型
json.load(文件名)
# 案例
with open(r'a.txt','r',encoding='utf8') as f:
print(json.load(f))
可以被序列化的数据类型可以查看JSONEncoder的源码

subprocess模块
subprocess模块可以实现远程操作其他计算机的功能,会在cmd窗口执行命令,动态获取命令执行并返回结果。
导入模块
import subprocess
run()方法
subprocess.run(args, *, stdin=None, input=None, stdout=None,
stderr=None, capture_output=False, shell=False, cwd=None,
timeout=None, check=False, encoding=None, errors=None,
text=None, env=None, universal_newlines=None)
来自菜鸟教程:
- args:shell命令,可以是字符串或者序列类型(如:list,元组)
- bufsize:缓冲区大小。当创建标准流的管道对象时使用,默认-1。
0:不使用缓冲区
1:表示行缓冲,仅当universal_newlines=True时可用,也就是文本模式
正数:表示缓冲区大小
负数:表示使用系统默认的缓冲区大小。 - stdin, stdout, stderr:分别表示程序的标准输入、输出、错误句柄
- preexec_fn:只在 Unix 平台下有效,用于指定一个可执行对象(callable object),它将在子进程运行之前被调用
- shell:如果该参数为 True,将通过操作系统的 shell 执行指定的命令。
- cwd:用于设置子进程的当前目录。
- env:用于指定子进程的环境变量。如果 env = None,子进程的环境变量将从父进程中继承。
Popen()方法
subprocess.Popen(args, bufsize=-1, executable=None, stdin=None,
stdout=None, stderr=None, preexec_fn=None, close_fds=True,
shell=False, cwd=None, env=None, universal_newlines=False,
startupinfo=None, creationflags=0,restore_signals=True,
start_new_session=False, pass_fds=(),
*, encoding=None, errors=None)
# 执行ls命令
res = subprocess.Popen('ls',shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE
)
# 获取正确命令执行之后的结果
res.stdout.read().decode('utf8')
# 获取错误命令执行之后的结果
res.stderr.read().decode('utf8')
来自菜鸟教程:
- args:shell命令,可以是字符串或者序列类型(如:list,元组)
- bufsize:缓冲区大小。当创建标准流的管道对象时使用,默认-1。
0:不使用缓冲区
1:表示行缓冲,仅当universal_newlines=True时可用,也就是文本模式
正数:表示缓冲区大小
负数:表示使用系统默认的缓冲区大小。 - stdin, stdout, stderr:分别表示程序的标准输入、输出、错误句柄
- preexec_fn:只在 Unix 平台下有效,用于指定一个可执行对象(callable object),它将在子进程运行之前被调用
- shell:如果该参数为 True,将通过操作系统的 shell 执行指定的命令。
- cwd:用于设置子进程的当前目录。
- env:用于指定子进程的环境变量。如果 env = None,子进程的环境变量将从父进程中继承。

python之模块(os、sys、json、subprocess)的更多相关文章
- 模块random+os+sys+json+subprocess
模块random+os+sys+json+subprocess 1. random 模块 (产生一个随机值) import random 1 # 随机小数 2 print(random.rando ...
- Python常用模块os & sys & shutil模块
OS模块 import os ''' os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname") 改变当前脚本工作目录: ...
- python - 常用模块 os, sys
常用模块: os(处理文件和目录), sys(sys 模块包含了与 Python 解释器和它的环境有关的函数.) sys.argv 变量是一个字符串的 列表.特别地,sys.argv 包含了 命令行参 ...
- python --- 23 模块 os sys pickle json
一. os模块 主要是针对操作系统的 用于文件操作 二. sys 模块 模块的查找路径 sys.path 三.pickle 模块 1. pickle.dumps(对象) 序列化 把对 ...
- python模块之sys和subprocess以及编写简单的主机扫描脚本
python模块之sys和subprocess以及编写简单的主机扫描脚本 1.sys模块 sys.exit(n) 作用:执行到主程序末尾,解释器自动退出,但是如果需要中途退出程序,可以调用sys.e ...
- Python调用外部程序——os.system()和subprocess.call
通过os.system函数调用其他程序 预备知识:cmd中打开和关闭程序 cmd中打开程序 a.打开系统自带程序 系统自带的程序的路径一般都已加入环境变量之中,只需在cmd窗口中直接输入程序名称即可. ...
- Python常用模块之sys
Python常用模块之sys sys模块提供了一系列有关Python运行环境的变量和函数. 常见用法 sys.argv 可以用sys.argv获取当前正在执行的命令行参数的参数列表(list). 变量 ...
- python之模块 os
# -*- coding: utf-8 -*- #python 27 #xiaodeng #python之模块 os import os ''' FUNCTIONS abort(...)#暂不了解 a ...
- python常用模块之sys模块
python常用模块之sys模块 1.sys.argv[]:命令行参数List,第一个元素是程序本身 # 写一个简单的python程序,代码如下: #!/usr/bin/python #coding= ...
- Python文件属性模块Os.path
Python文件属性模块Os.path介绍 os.path模块主要用于文件属性获取和判断,在编程中会经常用到,需要熟练掌握.以下是该模块的几种常用方法. os.path官方文档:http://docs ...
随机推荐
- 彻底理解volatile关键字
1. volatile简介 在上一篇文章中我们深入理解了java关键字,我们知道在java中还有一大神器就是关键volatile,可以说是和synchronized各领风骚,其中奥妙,我们来共同探讨下 ...
- 截取url传值
// 页面传值 subStr(url) { var obj = {}; var str = url.split('?')[1]; var str2 = str.split('&'); cons ...
- dev分支代码覆盖master分支代码
将develop分支上的代码完全覆盖master分支, 1. 切换到master分支 git checkout master 2. 执行以下命令 git reset --hard origin/dev ...
- python+pytest接口自动化(13)-token关联登录
在PC端登录公司的后台管理系统或在手机上登录某个APP时,经常会发现登录成功后,返回参数中会包含token,它的值为一段较长的字符串,而后续去请求的请求头中都需要带上这个token作为参数,否则就提示 ...
- 数组-LeetCode-笔试
目录 数组理论基础 二分查找 二分法第一种写法 二分法第二种写法 ACM 移除元素 暴力解法 双指针法(快慢指针) ACM 有序数组的平方 暴力排序 双指针法 长度最小的子数组 暴力解法 滑动窗口 相 ...
- 面试官:说一说Zookeeper中Leader选举机制
哈喽!大家好,我是小奇,一位不靠谱的程序员 小奇打算以轻松幽默的对话方式来分享一些技术,如果你觉得通过小奇的文章学到了东西,那就给小奇一个赞吧 文章持续更新 一.前言 今天又是一个阳光明媚的一天,我又 ...
- 4.Java开发环境的搭建
Java开发环境搭建 一.JDK下载与安装 JDK8下载地址 选择目录,点击下一步 二.配置环境变量 变量名:JAVA_HOME 变量值:JDK安装路径 变量值:CLASSPATH 变量值:.;%JA ...
- JDK7u21反序列链学习
JDK7u21 1.前置知识 jdk7u21是一条不依赖CommonsCollections库依赖的,看利用链所有知识其实跟CommonsCollections也有重复,我们来学习一下以前没学过的类或 ...
- Java学习day10
在类内定义的类就称为内部类.内部类可以访问外部类的所有成员,外部类要访问内部类,必须先建立对象 内部类分为成员内部类和局部内部类 外界创建public修饰的成员内部类对象的格式:外部类名.内部类名 对 ...
- 微服务状态之python巡查脚本开发
背景 由于后端微服务架构,于是各种业务被拆分为多个服务,服务之间的调用采用RPC接口,而Nacos作为注册中心,可以监听多个服务的状态,比如某个服务是否down掉了.某个服务的访问地址是否改变.以及流 ...