python

py3笔记22:OS常用命令

2022-09-03  本文已影响0人  _百草_

1. OS模块介绍

Python标准库
用于访问操作系统相关功能
作用:实现跨平台访问:包括大量操作系统的函数
主要功能:


2. 系统操作

# 脚本执行于windows平台
import os

# 查看当前操作系统名称。windows:nt;linux:posix
print(os.name)  # nt

# 获取系统环境变量
print(os.environ)
# environ({ 'ANDROID_HOME': 'C:\\me\\Java\\SDK\\android-sdk-windows', 'ANT_HOME': 'C:\\me\\testing\\apache-ant-1.10.4\\',  'APPINUM': 'C:\\me\\appium\\Appium\\node_modules\\.bin', 'CLASSPATH': '.;C:\\me\\Java\\jdk1.8.0_101\\lib\\dt.jar;C:\\me\\Java\\jdk1.8.0_101\\lib\\tools.jar;C:\\me\\testing\\apache-jmeter-3.2\\\\lib\\logkit-2.0.jar;C:\\me\\testing\\apache-jmeter-3.2\\\\lib\\jorphan.jar;C:\\me\\testing\\apache-jmeter-3.2\\\\ext\\ApacheJMeter_core.jar;C:\\me\\testing\\apache-ant-1.10.4\\lib;'})

# 当前平台的路径分割符。window:\   linux:/
print(os.sep)  # \

# 可替换的路径分隔符。windows:/
print(os.altsep)  # /

# 文件名和文件扩展名之间的分割符号。windows:.
print(os.extsep)  # .

# 环境变量中的分隔符。posix::  windows:;
print(os.pathsep)  # ;

# 行结束符。不同系统中行尾结束符不同,如windows:\r\n
print(os.linesep)  # '\r\n'  脚本输出直接为换行,而行解释器输出'\r\n'

# null 设备路径。windows:nul    posix:/dev/null
print(os.devnull)  # nul

# 当使用exec函数族时,若没有PATH环境变量,则会默认查找os.defpath中的值作为子进程PATH的值。
print(os.defpath)   # .;C:\bin

3. 目录及文件操作

# 脚本执行于windows平台下
import os

# 获取当前工作目录,即当前执行的Python脚本工作的目录路径
print(os.getcwd())  # C:\PycharmProjects\TestPy\d20220903os

# 改变当前脚本的工作目录;相当于shell下cd
os.chdir('..')  # .. 表示进入上一级目录   参数为dirname
print(os.getcwd())  # C:\Users\wang\PycharmProjects\TestPy
os.chdir("d20220903os")

# 返回当前目录的字符串名即.
print(os.curdir)  # .

# 返回当前目录的父目录字符串名即..
print(os.pardir)  # ..

# 列出指定目录下的所有文件和子目录,包括隐藏文件
print(os.listdir())  # 参数dirname可以省略,默认当前目录
# ['file_dir.py', 'import_file.py', 'os_os.py', '__init__.py', '__pycache__']

# 生成多层递归目录
os.makedirs("dir1/dir2")  # mode参数,即权限模式
print(os.listdir())  # ['dir1', 'file_dir.py', 'import_file.py', 'os_os.py', '__init__.py', '__pycache__']
print(os.listdir("dir1"))  # ['dir2']

# 递归删除空目录
# os.removedirs("dir1")  # OSError: [WinError 145] 目录不是空的。: 'dir1'
os.removedirs("dir1/dir2")
print(os.listdir())  # ['file_dir.py', 'import_file.py', 'os_os.py', '__init__.py', '__pycache__']

# 创建单级目录
os.mkdir("dir3")
print(os.listdir())  # ['dir3', 'file_dir.py', 'import_file.py', 'os_os.py', '__init__.py', '__pycache__']
print(os.listdir("dir3"))  # []

# 删除单级目录
os.rmdir("dir3")  # 若目录非空,则报错OSError: [WinError 145] 目录不是空的。: 'dir3'
print(os.listdir())  # ['file_dir.py', 'import_file.py', 'os_os.py', '__init__.py', '__pycache__']

# 删除一个文件
def save_file(file_name):
    # 创建一个文件filename
    with open(file_name, "w", encoding="utf-8") as f:
        f.write(f"This is {file_name}")
# 先创建a.txt
filename = "a.txt"
save_file(filename)
os.remove(filename)  # 删除文件

# 文件重命名
newfilename = "b.txt"
save_file(filename)
print(os.listdir())  # ['a.txt', 'file_dir.py', 'import_file.py', 'os_os.py', '__init__.py', '__pycache__']
os.rename(filename, newfilename)  # 文件重命名
print(os.listdir())  # ['b.txt', 'file_dir.py', 'import_file.py', 'os_os.py', '__init__.py', '__pycache__']
with open(newfilename, "r") as f:
    content = f.read()
    print("文本内容是:",content)  # 文本内容是: This is a.txt
os.remove(newfilename)

# os.stat(path):获取文件或目录信息
print(os.stat( "."))  # os.stat_result(st_mode=16895, st_ino=5066549581200846, st_dev=1083547920, st_nlink=1, st_uid=0, st_gid=0, st_size=4096, st_atime=1662176008, st_mtime=1662176008, st_ctime=1662172313)
# os.path.abspath(path)返回绝对路径
print(os.path.abspath("."))  # C:\Users\wang\PycharmProjects\TestPy\d20220903os

# os.path.split(path)分割成功目录或文件,并2元组返回
print(os.path.split(os.path.abspath(".")))  # ('C:\\Users\\wang\\PycharmProjects\\TestPy', 'd20220903os')

# os.path.dirname(path)返回path的目录,即os.path.split返回值的第1个
print(os.path.dirname(os.path.abspath(".")))  # C:\Users\wang\PycharmProjects\TestPy

# 返回path最后的文件名,即os.path.split返回值的第2个;若/或\结尾则返回空值
print(os.path.basename(os.path.abspath(".")))  # d20220903os
print(os.path.basename(r"C:\Users\wang\PycharmProjects\TestPy\\"))  # 空字符串

# 判断路径(目录或文件)是否存在。存在返回True,否则返回False
print(os.path.exists(r"C:\User"))  # False

# 判断路径是否是绝对路径。是则返回True,否则返回False
print(os.path.isabs("a"))  # False
print(os.path.isabs(r"G:\User"))  # True

# 判断是否是存在的文件(该路径下,未指定则是当前路径)
print(os.path.isfile("test_string.py"))  # False

# 判断是否是存在的目录(该路径下,未指定则是当前路径)
print(os.path.isdir("d20220903os"))  # False

# 路径拼接;即多个path直接使用os.sep拼接成新path
# 若一个path是绝对路径,则之前的path均会被舍弃
# linux 根路径:/
print(os.path.join("dir1","dir2"))  # dir1\dir2
print(os.path.join("dir1",os.path.abspath("."),"dir2"))  # C:\Users\wang\PycharmProjects\TestPy\d20220903os\dir2

# 返回path(文件或目录)最后存取时间;即os.stat返回的st_atime
print(os.path.getatime("."))  # 1662177531.7178557

# 返回path(文件或目录)最后修改时间;即os.stat返回的st_mtime
# py文件,修改后不保存,执行时自动报错;st_mtime为最后修改时间,st_atime为最后保存时间
print(os.path.getmtime("."))  # 1662177531.6179154

# 返回文件包含的字符数,即os.stat返回的st_size
print(os.path.getsize("."))  # 4096

# 脚本绝对路径:C:\Users\wang\PycharmProjects\TestPy\d20220903os\dir1\test1.py
import os

print(os.getcwd())  # 即返回所运行脚本的目录

# 脚本执行:C:\Users\wang\PycharmProjects\TestPy\d20220903os\dir1
# 脚本被dir2下test2.py调用后,执行test2.py的结果:C:\Users\wang\PycharmProjects\TestPy\d20220903os\dir2


print(os.path.realpath(__file__))  # 获取当前脚本的绝对路径
# 脚本直接执行:C:\Users\wang\PycharmProjects\TestPy\d20220903os\dir1\test1.py
# 脚本被dir2下test2.py调用后,执行test2.py的结果:C:\Users\wang\PycharmProjects\TestPy\d20220903os\dir1\test1.py

4. 执行命令

import os
os.system('adb devices')
print(os.popen('adb devices').read())

5. 管理进程

https://www.lmlphp.com/user/58023/article/item/606112/


6. 参考资料

1、Python基础操作之os模块常用命令详解
2、adb笔记1: 模拟点击、滑动、输入、按键&python中运行adb
3、Python:OS模块-进程管理

上一篇 下一篇

猜你喜欢

热点阅读