成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Python隱藏功能大揭秘 十個系統調用功能你必須知道

開發 前端
今天我們要探索Python中的一些隱藏功能,這些功能可以幫助你更高效地與操作系統進行交互。從簡單的文件操作到高級的系統監控,這些功能將讓你大開眼界。話不多說,讓我們開始吧!

今天我們要探索Python中的一些隱藏功能,這些功能可以幫助你更高效地與操作系統進行交互。從簡單的文件操作到高級的系統監控,這些功能將讓你大開眼界。話不多說,讓我們開始吧!

1.os.system() - 執行外部命令

os.system() 是 Python 中執行外部命令的最簡單方法之一。它會等待命令執行完成并返回命令的退出狀態碼。

import os

# 執行系統命令
result = os.system('echo Hello, World!')
print(f'Command executed with exit status: {result}')

輸出結果:

Hello, World!
Command executed with exit status: 0

解釋:os.system() 直接調用系統命令行執行指定的命令,并打印命令的輸出。

2.subprocess.run() - 更強大的外部命令執行

subprocess.run() 提供了比os.system() 更強大和靈活的外部命令執行功能,可以捕獲命令的輸出。

import subprocess

# 執行系統命令并捕獲輸出
result = subprocess.run(['echo', 'Hello, World!'], capture_output=True, text=True)
print(f'Command output: {result.stdout}')
print(f'Command exit status: {result.returncode}')

輸出結果:

Command output: Hello, World!
Command exit status: 0

解釋:subprocess.run() 返回一個CompletedProcess 實例,包含命令的標準輸出、標準錯誤和退出狀態碼。

3.os.environ - 訪問環境變量

os.environ 是一個字典,用于訪問和修改環境變量。

import os

# 訪問環境變量
python_path = os.environ.get('PYTHONPATH')
print(f'PYTHONPATH: {python_path}')

# 設置環境變量
os.environ['MY_VAR'] = 'Hello, Python!'
print(f'MY_VAR: {os.environ.get("MY_VAR")}')

輸出結果:

PYTHONPATH: (your PYTHONPATH)
MY_VAR: Hello, Python!

解釋:通過os.environ 可以方便地訪問和修改當前進程的環境變量。

4.os.walk() - 遍歷目錄樹

os.walk() 生成目錄樹下的所有文件名,通過遍歷目錄樹,可以方便地處理文件和目錄。

import os

# 遍歷目錄樹
for root, dirs, files in os.walk('/path/to/directory'):
    print(f'Root: {root}')
    print(f'Directories: {dirs}')
    print(f'Files: {files}')
    print('-' * 40)

輸出結果:

Root: /path/to/directory
Directories: ['subdir1', 'subdir2']
Files: ['file1.txt', 'file2.txt']
----------------------------------------
Root: /path/to/directory/subdir1
Directories: []
Files: ['file3.txt']
----------------------------------------
Root: /path/to/directory/subdir2
Directories: []
Files: ['file4.txt']
----------------------------------------

解釋:os.walk() 返回一個三元組(root, dirs, files),分別表示當前目錄路徑、子目錄列表和文件列表。

5.shutil.copy() - 文件復制

shutil.copy() 用于復制文件,支持不同文件系統和設備之間的復制。

import shutil

# 復制文件
source_file = '/path/to/source/file.txt'
destination_file = '/path/to/destination/file.txt'
shutil.copy(source_file, destination_file)
print(f'File copied from {source_file} to {destination_file}')

輸出結果:

File copied from /path/to/source/file.txt to /path/to/destination/file.txt

解釋:shutil.copy() 將源文件復制到目標位置,如果目標文件已存在,會被覆蓋。

6.shutil.rmtree() - 遞歸刪除目錄

shutil.rmtree() 用于遞歸刪除目錄及其內容,類似于 Unix/Linux 的rm -rf 命令。

import shutil

# 遞歸刪除目錄
directory_to_remove = '/path/to/directory'
shutil.rmtree(directory_to_remove)
print(f'Directory {directory_to_remove} removed')

輸出結果:

Directory /path/to/directory removed

解釋:shutil.rmtree() 遞歸地刪除指定目錄及其所有子目錄和文件。

7.psutil - 獲取系統信息

psutil 是一個跨平臺庫,用于輕松獲取系統運行的進程和系統利用率(CPU、內存、磁盤、網絡等)信息。

import psutil

# 獲取CPU使用率
cpu_usage = psutil.cpu_percent(interval=1)
print(f'CPU Usage: {cpu_usage}%')

# 獲取內存使用率
memory_info = psutil.virtual_memory()
print(f'Total Memory: {memory_info.total / (1024 ** 3):.2f} GB')
print(f'Available Memory: {memory_info.available / (1024 ** 3):.2f} GB')

輸出結果:

CPU Usage: 10.5%
Total Memory: 16.00 GB
Available Memory: 8.00 GB

解釋:psutil 提供了一組函數來獲取系統硬件和軟件資源的使用情況。

8.platform - 獲取平臺信息

platform 模塊用于獲取當前系統的平臺信息,如操作系統類型、版本等。

import platform

# 獲取操作系統信息
system = platform.system()
version = platform.version()
architecture = platform.architecture()
print(f'System: {system}')
print(f'Version: {version}')
print(f'Architecture: {architecture}')

輸出結果:

System: Darwin
Version: 21.1.0
Architecture: ('64bit', '')

解釋:platform 模塊提供了一系列函數來獲取當前系統的詳細信息。

9.tempfile - 創建臨時文件和目錄

tempfile 模塊用于創建臨時文件和目錄,這些文件和目錄在程序結束時會自動刪除。

import tempfile

# 創建臨時文件
with tempfile.NamedTemporaryFile(mode='w', delete=False) as temp_file:
    temp_file.write('Hello, Temp File!')
    temp_file_path = temp_file.name

print(f'Temporary file created at: {temp_file_path}')

# 創建臨時目錄
temp_dir = tempfile.TemporaryDirectory()
print(f'Temporary directory created at: {temp_dir.name}')
temp_dir.cleanup()  # 手動清理臨時目錄

輸出結果:

Temporary file created at: /var/folders/xx/yy/T/tmpk123456
Temporary directory created at: /var/folders/xx/yy/T/tmpabcdefg

解釋:tempfile.NamedTemporaryFile() 創建臨時文件,tempfile.TemporaryDirectory() 創建臨時目錄,這些文件和目錄在不再需要時會自動刪除。

10.signal - 處理信號

signal 模塊用于處理操作系統信號,如中斷(Ctrl+C)等。

import signal
import time

# 定義信號處理函數
def signal_handler(sig, frame):
    print(f'Signal {sig} received. Exiting...')
    exit(0)

# 注冊信號處理函數
signal.signal(signal.SIGINT, signal_handler)

print('Press Ctrl+C to exit...')
while True:
    time.sleep(1)

輸出結果:

Press Ctrl+C to exit...
(Press Ctrl+C)
Signal 2 received. Exiting...

解釋:signal.signal() 注冊一個信號處理函數,當接收到指定信號時,調用該函數。在這個例子中,當接收到中斷信號(Ctrl+C)時,程序會優雅地退出。

實戰案例:系統監控腳本

現在,我們將上述知識結合起來,編寫一個簡單的系統監控腳本,每隔一定時間記錄一次CPU和內存的使用情況。

import psutil
import time
import os

def log_system_info(log_file):
    with open(log_file, 'a') as f:
        cpu_usage = psutil.cpu_percent(interval=1)
        memory_info = psutil.virtual_memory()
        f.write(f'Timestamp: {time.strftime("%Y-%m-%d %H:%M:%S")}\n')
        f.write(f'CPU Usage: {cpu_usage}%\n')
        f.write(f'Total Memory: {memory_info.total / (1024 ** 3):.2f} GB\n')
        f.write(f'Available Memory: {memory_info.available / (1024 ** 3):.2f} GB\n')
        f.write('-' * 40 + '\n')

if __name__ == "__main__":
    log_file = 'system_monitor.log'
    interval = 10  # 監控間隔(秒)

    print(f'Logging system information to {log_file} every {interval} seconds...')

    try:
        while True:
            log_system_info(log_file)
            time.sleep(interval)
    except KeyboardInterrupt:
        print('Monitoring stopped.')

分析:這個腳本每隔一定時間記錄一次系統的CPU和內存使用情況,并將信息寫入日志文件中。當按下 Ctrl+C 時,腳本會優雅地停止運行。

總結

通過今天的文章,我們探索了Python中一些強大的隱藏功能,這些功能涵蓋了從執行外部命令到系統監控的各個方面。我們學習了如何使用os 和subprocess 模塊執行系統命令,shutil 模塊進行文件和目錄操作,psutil 模塊獲取系統信息,以及signal 模塊處理操作系統信號。最后,我們通過一個實戰案例展示了如何將這些知識結合起來,編寫一個系統監控腳本。

責任編輯:武曉燕 來源: 小白PythonAI編程
相關推薦

2016-06-29 13:50:12

云計算

2021-09-15 09:20:37

Python函數代碼

2024-06-21 15:00:42

Python系統調用功能

2023-12-12 17:46:33

系統kswapd0內核

2011-05-11 15:28:05

2023-11-13 08:18:56

2011-01-28 15:11:15

PowerShell

2022-06-08 10:42:34

ReduceJavaScript技巧

2019-04-01 06:37:12

R語言數據分析數據

2023-10-24 18:05:00

2023-02-06 16:46:59

JavaScript程序員技巧

2022-06-08 23:45:44

iOS蘋果功能

2023-05-11 16:29:39

Javascript開發前端

2011-08-11 14:13:02

Windows8

2022-07-26 09:09:23

Python編程語言代碼

2019-09-04 14:30:54

Nginx功能服務器

2023-01-17 15:39:17

CSS功能函數

2021-05-26 08:00:00

微服務開發求職

2021-08-29 23:40:51

手機華為功能

2015-07-23 10:37:13

Linux命令
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美一区二区三区在线观看 | 亚洲网站免费看 | 国产黄视频在线播放 | 第一av | 欧美 日韩 国产 成人 在线 | 精品亚洲一区二区 | 国产粉嫩尤物极品99综合精品 | 国产在线精品一区二区三区 | 日韩在线视频一区二区三区 | 日韩欧美国产不卡 | 国产偷久久一级精品60部 | 国产在线观看一区 | 亚洲免费一区二区 | 国内久久| 日韩av成人在线 | 国产精品亚洲综合 | 亚洲国产aⅴ成人精品无吗 亚洲精品久久久一区二区三区 | 亚洲成人日韩 | 国产999精品久久久 日本视频一区二区三区 | 成人欧美一区二区三区视频xxx | 国产午夜精品视频 | 成人国产精品久久久 | 一区二区三区四区不卡 | 久www | 亚洲激情在线视频 | 欧美在线a | 国产精品99久久久久久宅男 | 男女污污动态图 | 精品国产视频 | 亚洲啪啪 | 国产成人在线观看免费 | 精品福利在线 | 欧美日韩在线一区二区 | 国产精品日女人 | 在线观看成人 | 在线欧美亚洲 | 中文字幕人成人 | 国产精品一区二区久久 | 免费激情| 精品中文字幕在线 | 国产成人福利在线观看 |