python应用-os模块shell命令和进程/环境变量功能介绍

python自带的os模块提供了许多与操作系统交互的函数,适配多种操作系统,比如windows,mac,linux等,比如常用路径操作、进程管理、环境参数等都可通过os模块实现。

之前介绍了os模块操作目录和os.path操作路径的一些常用功能,下面介绍下其他的一些功能

os.system执行shell命令

命令执行成功后,返回0,否则返回1

复制代码
>>> os.system('cd C:')
0
>>> os.system('dir')
0
>>> 

os.popen(command, mode='r', buffering=-1):打开一个管道,以执行shell命令,并返回与该管道连接的文件对象。

复制代码
#模拟打开cmd执行ipconfig命令
content = os.popen("ipconfig")
#读取内容
contents = content.read()
print(contents)
#打印ipconfig命令的执行内容
Windows IP 配置

以太网适配器 Npcap Loopback Adapter:

   连接特定的 DNS 后缀 . . . . . . . : 
   本地链接 IPv6 地址. . . . . . . . : fe80::a164:4bab:4ba3:2038%8
   自动配置 IPv4 地址  . . . . . . . : 169.254.32.56
   子网掩码  . . . . . . . . . . . . : 255.255.0.0
   默认网关. . . . . . . . . . . . . : 

#关闭管道
 contents.close()

这是个比较旧的命令,一般都不用了,主要使用subprocess模块了。

subprocess模块介绍:

复制代码
import subprocess
result = subprocess.run('ipconfig', stdout=subprocess.PIPE, text=True)

#打印执行返回码,0代表成功
print(result.returncode)
0
# 获取命令的错误输出  
print( result.stderr)
 None
 
#打印ipconfig命令执行的输出
print(result.stout)

Windows IP 配置
以太网适配器 Npcap Loopback Adapter:
   连接特定的 DNS 后缀 . . . . . . . : 
   本地链接 IPv6 地址. . . . . . . . : fe80::a164:4bab:4ba3:2038%8
   自动配置 IPv4 地址  . . . . . . . : 169.254.32.56
   子网掩码  . . . . . . . . . . . . : 255.255.0.0
   默认网关. . . . . . . . . . . . . : 

os.environ环境变量

windows中的环境变量如下:

1 os.environ.get(key, default=None):获取环境变量的值,如果不存在则返回默认值。

复制代码
#获取JAVA_HOME的环境变量
path_value = os.environ.get('JAVA_HOME')
print(path_value)
C:\Program Files (x86)\Java\jdk1.8.0_73

2 修改环境变量

修改环境变量不会改变系统中的变量值,只是修改执行进程用到的这个环境变量。

复制代码
os.environ['JAVA_HOME'] = 'D:\Program Files (x86)\Java\jdk1.8.0_73'
print(os.environ['JAVA_HOME'])
D:\Program Files (x86)\Java\jdk1.8.0_73

进程管理

1 os.getpid():获取当前进程的ID。

复制代码
os.getpid()
17500

2 os.getppid():获取父进程的ID。

复制代码
 os.getppid()
10784

3 os.kill(pid, sig):发送信号给进程。

复制代码
import os
import signal

pid = os.getpid()

# 使用 os.kill() 发送一个信号给这个进程
# 通常,我们使用 signal.SIGTERM 来请求进程正常终止
os.kill(pid, signal.SIGTERM)

共勉: 东汉·班固《汉书·枚乘传》:"泰山之管穿石,单极之绠断干。水非石之钻,索非木之锯,渐靡使之然也。"

-----指水滴不断地滴,可以滴穿石头;

-----比喻坚持不懈,集细微的力量也能成就难能的功劳。

----感谢读者的阅读和学习,谢谢大家。

相关推荐
tianbin9115 分钟前
批处理与微调辅助场景:Claude 中转并发、链路缓存与压测对比
java·开发语言·缓存
ratel️11 分钟前
小墨析 · Office Agent 日常办公不烧心
python·langchain·word·excel·fastapi·js·ppt
frjc13 分钟前
Spring AI 里 ChatClient 和 ChatModel 有什么区别?什么时候该用哪个?
java·开发语言·spring·ai
小成2023032026520 分钟前
C++~05异常处理
开发语言·c++
Wang's Blog22 分钟前
Java 项目实战: 交友项目 - 圈子功能的表设计方案
java·开发语言·交友
MrGet41 分钟前
一步一步学Python(三):文件读写
python
轻舟技术A1 小时前
Rust 重写 Pi:会话启动耗时降 91%,就绪内存少 78%
开发语言·后端·rust
Jack N1 小时前
【Strapi 系列之五】前端怎么接?Next.js + Tailwind 拉取 Strapi 数据(含代码)
开发语言·前端·javascript·strapi
是Yu欸1 小时前
先让 T1 Pro 传回一张好用的图:JPEG 抓拍、RTSP 视频与方向校正
python·机器人·音视频