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)的更多相关文章

  1. 模块random+os+sys+json+subprocess

    模块random+os+sys+json+subprocess 1. random 模块   (产生一个随机值) import random 1 # 随机小数 2 print(random.rando ...

  2. Python常用模块os & sys & shutil模块

    OS模块 import os ''' os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname") 改变当前脚本工作目录: ...

  3. python - 常用模块 os, sys

    常用模块: os(处理文件和目录), sys(sys 模块包含了与 Python 解释器和它的环境有关的函数.) sys.argv 变量是一个字符串的 列表.特别地,sys.argv 包含了 命令行参 ...

  4. python --- 23 模块 os sys pickle json

    一.   os模块 主要是针对操作系统的 用于文件操作 二.    sys 模块 模块的查找路径   sys.path 三.pickle 模块 1.  pickle.dumps(对象) 序列化  把对 ...

  5. python模块之sys和subprocess以及编写简单的主机扫描脚本

    python模块之sys和subprocess以及编写简单的主机扫描脚本 1.sys模块 sys.exit(n)  作用:执行到主程序末尾,解释器自动退出,但是如果需要中途退出程序,可以调用sys.e ...

  6. Python调用外部程序——os.system()和subprocess.call

    通过os.system函数调用其他程序 预备知识:cmd中打开和关闭程序 cmd中打开程序 a.打开系统自带程序 系统自带的程序的路径一般都已加入环境变量之中,只需在cmd窗口中直接输入程序名称即可. ...

  7. Python常用模块之sys

    Python常用模块之sys sys模块提供了一系列有关Python运行环境的变量和函数. 常见用法 sys.argv 可以用sys.argv获取当前正在执行的命令行参数的参数列表(list). 变量 ...

  8. python之模块 os

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #python之模块 os import os ''' FUNCTIONS abort(...)#暂不了解 a ...

  9. python常用模块之sys模块

    python常用模块之sys模块 1.sys.argv[]:命令行参数List,第一个元素是程序本身 # 写一个简单的python程序,代码如下: #!/usr/bin/python #coding= ...

  10. Python文件属性模块Os.path

    Python文件属性模块Os.path介绍 os.path模块主要用于文件属性获取和判断,在编程中会经常用到,需要熟练掌握.以下是该模块的几种常用方法. os.path官方文档:http://docs ...

随机推荐

  1. 彻底理解volatile关键字

    1. volatile简介 在上一篇文章中我们深入理解了java关键字,我们知道在java中还有一大神器就是关键volatile,可以说是和synchronized各领风骚,其中奥妙,我们来共同探讨下 ...

  2. 截取url传值

    // 页面传值 subStr(url) { var obj = {}; var str = url.split('?')[1]; var str2 = str.split('&'); cons ...

  3. dev分支代码覆盖master分支代码

    将develop分支上的代码完全覆盖master分支, 1. 切换到master分支 git checkout master 2. 执行以下命令 git reset --hard origin/dev ...

  4. python+pytest接口自动化(13)-token关联登录

    在PC端登录公司的后台管理系统或在手机上登录某个APP时,经常会发现登录成功后,返回参数中会包含token,它的值为一段较长的字符串,而后续去请求的请求头中都需要带上这个token作为参数,否则就提示 ...

  5. 数组-LeetCode-笔试

    目录 数组理论基础 二分查找 二分法第一种写法 二分法第二种写法 ACM 移除元素 暴力解法 双指针法(快慢指针) ACM 有序数组的平方 暴力排序 双指针法 长度最小的子数组 暴力解法 滑动窗口 相 ...

  6. 面试官:说一说Zookeeper中Leader选举机制

    哈喽!大家好,我是小奇,一位不靠谱的程序员 小奇打算以轻松幽默的对话方式来分享一些技术,如果你觉得通过小奇的文章学到了东西,那就给小奇一个赞吧 文章持续更新 一.前言 今天又是一个阳光明媚的一天,我又 ...

  7. 4.Java开发环境的搭建

    Java开发环境搭建 一.JDK下载与安装 JDK8下载地址 选择目录,点击下一步 二.配置环境变量 变量名:JAVA_HOME 变量值:JDK安装路径 变量值:CLASSPATH 变量值:.;%JA ...

  8. JDK7u21反序列链学习

    JDK7u21 1.前置知识 jdk7u21是一条不依赖CommonsCollections库依赖的,看利用链所有知识其实跟CommonsCollections也有重复,我们来学习一下以前没学过的类或 ...

  9. Java学习day10

    在类内定义的类就称为内部类.内部类可以访问外部类的所有成员,外部类要访问内部类,必须先建立对象 内部类分为成员内部类和局部内部类 外界创建public修饰的成员内部类对象的格式:外部类名.内部类名 对 ...

  10. 微服务状态之python巡查脚本开发

    背景 由于后端微服务架构,于是各种业务被拆分为多个服务,服务之间的调用采用RPC接口,而Nacos作为注册中心,可以监听多个服务的状态,比如某个服务是否down掉了.某个服务的访问地址是否改变.以及流 ...