Python 学习笔记(九)—— 操作系统和环境

目录

一、os模板

二、platform模块

三、扩展第三方库psutil

四、操作系统信息

4.1 使用platform模块

4.2 使用sys模块

4.3 使用os模块

4.4 使用subprocess模块


Python操作系统和环境主要指的是使用Python进行系统级操作和管理的相关功能和工具。

Python提供了许多用于操作操作系统的内置模块,如os模块、sys模块、subprocess模块等。这些模块提供了一系列函数和方法,可以用于文件操作、进程管理、环境变量操作、系统信息获取等功能。

例如,os模块提供了一系列函数用于对文件和目录进行操作,如创建、删除、重命名、复制等操作。sys模块用于访问和操作与Python解释器相关的系统变量和功能,如命令行参数、标准输入输出等。subprocess模块用于启动新进程,执行外部命令。

一、os模板

Python的内置os模块是用于与操作系统进行交互的工具。它提供了许多函数和方法,用于执行与文件和目录、进程和环境变量等相关的操作。

以下是os模块中常用的一些函数和方法:

  1. os.name:获取当前操作系统的名称,可能的取值为"posix"(Unix/Linux/Mac OS X)或 "nt"(Windows)。

  2. os.getcwd():获取当前工作目录的路径。

  3. os.chdir(path):改变当前工作目录到指定的路径。

  4. os.listdir(path):返回指定路径下的所有文件和目录的列表。

  5. os.path.join(path1, path2, ...):将多个路径组合成一个完整的路径。

  6. os.path.exists(path):检查指定路径是否存在。

  7. os.path.isfile(path):检查指定路径是否是一个文件。

  8. os.path.isdir(path):检查指定路径是否是一个目录。

  9. os.path.abspath(path):返回指定路径的绝对路径。

  10. os.path.basename(path):返回指定路径的文件名或目录名。

  11. os.path.dirname(path):返回指定路径的父目录。

  12. os.path.split(path):将指定路径拆分为目录和文件名。

  13. os.path.splitext(path):将指定路径拆分为文件名和扩展名。

  14. os.mkdir(path):创建一个新的目录。

  15. os.rmdir(path):删除指定的目录。

  16. os.remove(path):删除指定的文件。

  17. os.rename(src, dst):将文件或目录从src重命名为dst。

  18. os.system(command):在新进程中执行给定的操作系统命令。

二、platform模块

Python的内置platform模块是用于获取关于操作系统平台的信息的工具。它提供了函数和方法,可以获取当前操作系统的名称、版本和架构等信息。

使用import platform语句可以导入platform模块。

以下是platform模块中常用的一些函数和方法:

platform.system():          获取当前操作系统的名称,可能是"Windows"、"Linux"、"Darwin"(Mac OS X)等。platform.release():         获取当前操作系统的版本。platform.architecture():    获取当前操作系统的架构,返回一个元组,第一个元素为位数,第二个元素为操作系统类型。platform.machine():         获取计算机的硬件架构。platform.node():            获取计算机的网络名称。platform.processor():       获取计算机的处理器名称。platform.uname():           获取计算机的硬件和操作系统的详细信息,返回一个包含多个元素的元组。platform.python_version():  获取当前Python解释器的版本。platform.python_implementation(): 获取当前Python解释器的实现,可能的取值为"CPython"、"Jython"、"IronPython"等。platform.python_compiler(): 获取当前Python解释器的编译器。

三、扩展第三方库psutil

psutil是一个跨平台库能够轻松实现获取系统运行的进程和系统利用率(包括CPU、内存、磁盘、网络等)信息。它主要用来做系统监控,性能分析,进程管理。它实现了同等命令行工具提供的功能,如ps、top、lsof、netstat、ifconfig、who、df、kill、free、nice、ionice、iostat、iotop、uptime、pidof、tty、taskset、pmap等。
官网地址:http://pythonhosted.org/psutil/
安装方式:

 pip install psutil

示例代码:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import psutil
import time'''监控服务进程并重启'''monitor_name = set(['httpd','keepalived']) # 用户指定监控的服务进程名称monitor_map = {
'httpd': 'systemctl restart httpd',
'keepalived': 'systemctl restart keepalived' # 系统在进程down掉后,自动重启
}proc_dict = {}
proc_name = set() # 系统检测的进程名称while True:for proc in psutil.process_iter(attrs=['pid','name']):proc_dict[proc.info['pid']] = proc.info['name']proc_name.add(proc.info['name'])# 通过集合的形式来找出停掉的进程名,前者有但是后者没有的proc_stop = monitor_name - proc_name  # 如果确实有监控的进程停掉了,需要自动重启功能if proc_stop:  for p in proc_stop:p_name = p# 执行重启命令,然后判断是否重启成功os.system(monitor_map[p_name])

四、操作系统信息

Python提供了多种方式来获取和操作操作系统信息。下面是一些常见的操作系统信息操作:

4.1 使用platform模块

Python的platform模块提供了许多函数来获取操作系统相关的信息,如操作系统的名称、版本号、架构等。可以使用以下代码获取操作系统的相关信息:

import platform# 获取操作系统的名称
os_name = platform.system()
print("操作系统名称:", os_name)# 获取操作系统的版本号
os_version = platform.release()
print("操作系统版本号:", os_version)# 获取操作系统的架构
os_architecture = platform.machine()
print("操作系统架构:", os_architecture)

4.2 使用sys模块

Python的sys模块提供了与 Python 解释器和其中运行的一些功能有关的变量和函数。可以使用以下代码获取操作系统的相关信息:

import sys# 获取操作系统的名称
os_name = sys.platform
print("操作系统名称:", os_name)

4.3 使用os模块

Python的os模块提供了许多操作系统相关的功能和方法。可以使用以下代码获取操作系统的相关信息:

import os# 获取操作系统的名称
os_name = os.name
print("操作系统名称:", os_name)# 获取操作系统的版本号
os_version = os.uname()
print("操作系统版本号:", os_version)

4.4 使用subprocess模块

subprocess模块可以用于执行系统命令并获取命令的输出。可以使用以下代码执行系统命令,并获取输出:

import subprocess# 执行系统命令
result = subprocess.run(['command'], capture_output=True, text=True)# 获取命令的标准输出
output = result.stdout
print("命令输出:", output)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/529.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

开源在线表单工具 HeyForm 使用教程

HeyForm 是一个非常出色的开源在线表单工具,可以通过直观的拖拽式编辑器,快速构建出美观实用的表单。 HeyForm 的功能非常丰富: 支持丰富的输入类型,从基础的文本、数字到高级的图片选择、日期选择、文件上传等,一应俱…

Nginx第3篇-使用ngx_http_proxy_connect_module配置https正向代理

场景 我使用python爬虫,然后需要个代理,所以就用Nginx搭了一个代理服务器。对Nginx也不太熟,慢慢摸索,搭建完之后发现只能代理http的请求,无法穿透https。几经折腾和摸索发现一个强大的HTTP代理模块:ngx_h…

配置静态IP【windows+ubuntu】

Windows配置静态IP 如下图所示,通过“网络和Internet进入设置界面”,依次操作“更改适配器选项”->选择要配置静态ip的网络“属性”->选择IPV4的属性->配置静态ip的地址、子网掩码、默认网关。默认网关应和路由器上的设置保持一致。 Ubuntu配…

SL7220线性降压恒流3.6A 外围只需两个电阻 耐压40V汽车大灯IC

概述: SL7220 是一款双路线性降压LED恒流驱动器,外围只需两个电阻,输出电流10MA-3600MA。 SL7220 内置过热保护功能,内置输入过压保护功能。 SL7220 静态电流典型值为120uA。 特点 ●输入电压范围:2.5V-40V ●电…

iperf3 网络性能测试

iperf3测试 1、iperf3简介 iperf3是一个主动测试网络带宽的工具,可以测试iTCP、UDP、SCTP等网络带宽;可以通过参数修改网络协议、缓冲区、测试时间、数据大小等,每个测试结果会得出吞吐量、带宽、重传数、丢包数等测试结果 2、参数详解 通…

Matlab方程组拟合【案例源码+视频教程】

专栏导读 作者简介:工学博士,高级工程师,专注于工业软件算法研究本文已收录于专栏:《复杂函数拟合案例分享》本专栏旨在提供 1.以案例的形式讲解各类复杂函数拟合的程序实现方法,并提供所有案例完整源码;2.…

【玩转PGSQL】源码安装 pgsql

源码安装配置 centos7 源码安装 postgresql 基础环境优化 systemctl stop firewalld.service systemctl disable firewalld.service #查看selinux getenforce #关闭selinux setenforce 0 #永久关闭selinux sed -i s#SELINUXenforcing#SELINUXdisabled#g /etc/selinu…

Qt mysql数据库表的增加,删除,修改,查询操作

连接mysql数据库 bool MainWindow::connectToDatabase(QSqlDatabase &db, const QString &host, const QString &dbName, const QString &user, const QString &password) {db QSqlDatabase::addDatabase("QMYSQL");db.setHostName(host);db.s…

OpenHarmony轻量系统开发【6】驱动之ADC按键

摘要:本文简单介绍如何操作ADC去读取电压,并且实现开发板上3个ADC按键检测的功能 适合群体:适用于润和Hi3861开发板,L0轻量系统驱动开发 文中所有代码仓库:https://gitee.com/qidiyun/hihope-3861-smart-home-kit 6…

如何识别伪装IP的网络攻击

伪装IP的网络攻击是一种通过篡改或伪造IP地址,冒充合法用户或服务器,发起恶意网络请求的攻击方式。这种攻击具有极强的隐蔽性,使得受害者在遭受攻击后难以找到真实的攻击者。为了识别伪装IP的网络攻击,我们可以采取以下几种方法&a…

yolov8调用zed实现三维跟踪测速

YOLOV8 + 双目实现三维跟踪测速 1. 相关工作2. 测速流程和原理(必读)3. 代码部分解析3.1 测距部分3.2 测速部分3.3 绘制轨迹3.4 主代码4. 实验结果5. 源码下载源码下载链接见文章末尾 1. 相关工作 本代码是在双目测距的基础上完成的,具体内容可见: yolov8直接调用zed相机…

代码随想录-哈希表 | 349 两个数组的交集

代码随想录-哈希表 | 349 两个数组的交集 LeetCode 349-两个数组的交集解题思路代码复杂度难点总结 LeetCode 349-两个数组的交集 题目链接 题目描述 给定两个数组 nums1 和 nums2 ,返回它们的交集。输出结果中的每个元素一定是唯一的。我们可以不考虑输出结果的…

C语言处理流程

C语言对源代码处理的四个步骤: 预处理 -> 编译 -> 汇编 -> 链接 预处理 (gcc -E hello.c -o hello.i) 宏定义展开、头文件展开、条件编译,(这里并不会检查语法) 编译 (gcc -S hello.i -o hello.s) 检查语法,将预处理后文件编译生成汇编文件…

SpringBoot中使用Jackson序列化返回

SpringBoot中使用Jackson序列化返回 在Spring Boot应用中,使用Jackson库来处理JSON的序列化和反序列化是一种常见的做法。Jackson是一个高效的JSON处理器,广泛用于Java环境中,尤其是在与Spring框架集成时。本文将详细介绍如何在Spring Boot中…

ubuntu18.04安装F4PGA教程

环境搭建教程: f4pga-arch-defs/xilinx/xc7 at main f4pga/f4pga-arch-defs GitHub git clone https://github.com/SymbiFlow/f4pga-arch-defs.git cd f4pga-arch-defs make env cd build 主要是make env,会下载很多东西,然后生成很多描…

数据结构·一篇搞定顺序表!

大家好啊,几日不见,甚是想念,从这一篇文章开始,我们就要进入数据结构了哦,那么我们废话不多说,今天我们一起来搞定顺序表!!! 1. 顺序表概念及结构 顺序表是一种线性结…

VBA脚本终章编译器崩溃

一、介绍 本篇文章为VBA脚本隐藏技术的最后一篇,将介绍如何在保证VBA脚本正常执行的情况下,使分析人员无法打开编译器。 那么为什么需要分析人员无法打开编译器呢? 首先,我们需要引入一个知识点。 在上篇《VBA隐藏技术stompin…

系统思考—战略

“有策略而无战术,是取胜之最慢之道。有战术而无策略,是败亡之前的嘈杂。”—孙子 最近接触的中小企业,充分能感受到在经济下行的情况下,组织与战略是不可分割的两个方面。有时候公司组织出现了问题,可能是因为战略不…

maven3.9的settings.xml 内容学习

settings.xml 文件介绍 settings.xml 是 Maven 的配置文件,它允许你自定义 Maven 的行为,比如设置仓库、代理、认证信息等。在 Maven 3.9 中,settings.xml 的结构和内容可能与之前的版本相似,但可能会有一些小的改进或变化。下面…

单分支:if语句

示例&#xff1a; /*** brief how about if? show you here.* author wenxuanpei* email 15873152445163.com(query for any question here)*/ #define _CRT_SECURE_NO_WARNINGS//support c-library in Microsoft-Visual-Studio #include <stdio.h>#define if_state…