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 ...
随机推荐
- 淘宝 rem 机制入门学习
一 移动设备尺寸多种多样,带来适配难度,有时甚至无从下手.1 移动设备上的Px 像素不等于设备的物理像素.iphone 6 作为开发标准设备不等于设备的物理像素.iPhone 5 物理宽度320iPh ...
- Ubuntu之安装Gradle
简介 Gradle 是以 Groovy 语言为基础,面向Java应用为主,基于DSL(领域特定语言)语法的自动化构建工具. 现在Android Studio用它来编译APK程序. 前提 Ubuntu官 ...
- Mysql_事务_存储过程_触发器
一.什么是事务? 事务(Transaction),一般是指要做的或所做的事情.在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit).事务通常由高级数据库操纵语言或编程语言( ...
- vs技巧 - 调试asp.net core源码
学习asp.net core的方式除了看官方文档,看源码是也是一种很好的方式.本文介绍一种方法,简单配置vs,无需第三方插件就可以将asp.net core的源码链接自己的项目,随时穿梭于core的源 ...
- 【UWP】实现一个波浪进度条
好久没写 blog 了,一个是忙,另外一个是觉得没啥好写.废话不多说,直接上效果图: 可能看到这波浪线你觉得会很难,但看完这篇 blog 后应该你也会像我一样恍然大悟.图上的图形,我们可以考虑是由 3 ...
- [ Perl ] 对文本文件进行行列翻转
https://www.cnblogs.com/yeungchie/ code #!/usr/bin/env perl #----------------------------- # Program ...
- Java多线程与线程池技术
一.序言 Java多线程编程线程池被广泛使用,甚至成为了标配. 线程池本质是池化技术的应用,和连接池类似,创建连接与关闭连接属于耗时操作,创建线程与销毁线程也属于重操作,为了提高效率,先提前创建好一批 ...
- 深度理解springboot集成cache缓存之源码解析
一.案例准备 1.创建数据表(employee表) 2.创建Employee实体类封装数据库中的数据 @AllArgsConstructor @NoArgsConstructor @Data @ToS ...
- LC-76
给你一个字符串 s .一个字符串 t .返回 s 中涵盖 t 所有字符的最小子串.如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 "" . 注意: 对于 t 中重复字符 ...
- Codeforeces 13B
计算几何二维基础