首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Python 30个操作系统命令,事半功倍

Python 30个操作系统命令,事半功倍

作者头像
用户11081884
发布2026-07-20 17:00:21
发布2026-07-20 17:00:21
230
举报

Python作为一门强大的编程语言,其与操作系统交互的能力使其成为自动化任务和系统管理的理想工具。本文介绍30个Python操作系统命令的使用,高效利用这些命令工作效率翻倍。

1. 获取与切换工作目录

使用os.getcwd()获取当前工作目录,os.chdir()切换目录:

代码语言:javascript
复制
import os
print(f"当前目录:{os.getcwd()}")  # 输出:/home/user/projects
os.chdir('/tmp')  # 切换到/tmp目录

2. 列出目录内容

os.listdir()可列出目录内容,结合os.path模块可获取完整路径:

代码语言:javascript
复制
files = [os.path.join(os.getcwd(), f) for f in os.listdir('.') if f.endswith('.py')]

3. 创建与删除目录

使用os.makedirs()创建多级目录,os.rmdir()删除空目录:

代码语言:javascript
复制
os.makedirs('project/data/raw', exist_ok=True)  # 递归创建目录
os.rmdir('project/docs')  # 删除空目录

4. 文件复制与移动

shutil模块提供高级文件操作:

代码语言:javascript
复制
import shutil
shutil.copy2('source.txt', 'backup/source.txt')  # 保留元数据
shutil.move('old.txt', 'new.txt')  # 重命名或移动文件

5. 递归目录操作

处理目录树使用shutil.copytree()shutil.rmtree()

代码语言:javascript
复制
shutil.copytree('src', 'backup/src')  # 复制整个目录树
shutil.rmtree('temp')  # 递归删除目录及其内容

6. 执行系统命令

subprocess.run()是执行系统命令的最佳方式:

代码语言:javascript
复制
import subprocess
result = subprocess.run(['ls', '-l'], capture_output=True, text=True)
print(result.stdout)

7. 带超时的命令执行

为命令添加超时控制:

代码语言:javascript
复制
try:
    subprocess.run(['ping', 'baidu.com'], timeout=5, check=True)
except subprocess.TimeoutExpired:
    print("命令执行超时")

8. 环境变量管理

读取和设置环境变量:

代码语言:javascript
复制
print(os.environ['PATH'])  # 读取PATH变量
os.environ['TEMP_DIR'] = '/tmp'  # 设置临时变量(仅当前进程有效)

9. 文件权限管理

修改文件权限(Linux/macOS)

代码语言:javascript
复制
os.chmod('script.sh', 0o755)  # 设置可执行权限
os.chown('file.txt', uid, gid)  # 修改文件所有者

10. 符号链接操作

创建和管理符号链接:

代码语言:javascript
复制
os.symlink('target.txt', 'link.txt')  # 创建符号链接
print(os.path.islink('link.txt'))  # 检查是否为链接

11. 获取系统信息

使用platform模块检测系统类型:

代码语言:javascript
复制
import platform
print(f"系统类型:{platform.system()}")  # 输出:Linux/Windows/Darwin
print(f"Python版本:{platform.python_version()}")

12. 进程管理

psutil库提供跨平台进程管理:

代码语言:javascript
复制
import psutil
for proc in psutil.process_iter(['pid', 'name', 'username']):
    print(proc.info)  # 打印所有进程信息

13. 系统资源监控

获取CPU、内存和磁盘使用情况:

代码语言:javascript
复制
cpu_percent = psutil.cpu_percent(interval=1)
mem = psutil.virtual_memory()
disk = psutil.disk_usage('/')
print(f"CPU使用率:{cpu_percent}%")
print(f"可用内存:{mem.available/1024**3:.1f}GB")

14. 网络连接信息

查看网络接口和连接:

代码语言:javascript
复制
net_io = psutil.net_io_counters()
conns = psutil.net_connections()
print(f"发送字节数:{net_io.bytes_sent}")
print(f"活跃连接数:{len(conns)}")

15. 用户与登录信息

获取系统用户信息:

代码语言:javascript
复制
users = psutil.users()
print(f"当前登录用户:{users[0].name}")
print(f"登录时间:{datetime.fromtimestamp(users[0].started)}")

16. 执行Shell命令

代码语言:javascript
复制
import subprocess
result = subprocess.run(['ls', '-l'], capture_output=True, text=True)
print(result.stdout)

17. 网络连接检查

代码语言:javascript
复制
import socket
socket.gethostbyname('google.com')  # 解析域名

18. 系统时间操作

代码语言:javascript
复制
import time
print(time.strftime('%Y-%m-%d %H:%M:%S'))  # 格式化时间

19. 文件压缩解压

代码语言:javascript
复制
import zipfile
with zipfile.ZipFile('archive.zip', 'w') as z:
    z.write('file.txt')  # 创建压缩包

20. 命令行参数解析

代码语言:javascript
复制
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--input', help='输入文件')
args = parser.parse_args()

21. 系统日志记录

代码语言:javascript
复制
import logging
logging.basicConfig(filename='app.log', level=logging.INFO)
logging.info('系统启动')

22. 定时任务执行

代码语言:javascript
复制
import sched, time
s = sched.scheduler(time.time, time.sleep)
s.enter(5, 1, print, ('5秒后执行',))
s.run()

23. 文件哈希校验

代码语言:javascript
复制
import hashlib
with open('file.txt', 'rb') as f:
    print(hashlib.md5(f.read()).hexdigest())

24. 系统信号处理

代码语言:javascript
复制
import signal
def handler(signum, frame):
    print("收到终止信号")
signal.signal(signal.SIGTERM, handler)

25. 跨平台路径处理

代码语言:javascript
复制
from pathlib import Path
config_path = Path.home() / '.config' / 'myapp'  # 跨平台家目录

实战案例:

案例1:系统监控脚本

代码语言:javascript
复制
import psutil
import time
from datetime import datetime

def system_monitor(interval=5):
    while True:
        now = datetime.now().strftime('%H:%M:%S')
        cpu = psutil.cpu_percent()
        mem = psutil.virtual_memory().percent
        print(f"[{now}] CPU: {cpu}% | MEM: {mem}%")
        time.sleep(interval)

system_monitor()

案例2:日志文件自动清理

代码语言:javascript
复制
import os
import glob
from datetime import datetime, timedelta

def clean_old_logs(log_dir, days=30):
    cutoff = datetime.now() - timedelta(days=days)
    for log_file in glob.glob(os.path.join(log_dir, '*.log')):
        mtime = datetime.fromtimestamp(os.path.getmtime(log_file))
        if mtime < cutoff:
            os.remove(log_file)
            print(f"已删除:{log_file}")

clean_old_logs('/var/log/app', days=7)

案例3:跨平台文件同步工具

代码语言:javascript
复制
import os
import shutil
import filecmp
from pathlib import Path

def sync_dirs(src, dst):
    src, dst = Path(src), Path(dst)
    for item in src.rglob('*'):
        rel_path = item.relative_to(src)
        dst_item = dst / rel_path
        
        if item.is_dir():
            dst_item.mkdir(exist_ok=True)
        elif item.is_file():
            if not dst_item.exists() or not filecmp.cmp(item, dst_item):
                shutil.copy2(item, dst_item)
                print(f"同步文件:{rel_path}")

sync_dirs('~/Documents', '/backup/Documents')

案例4:系统健康检查脚本

代码语言:javascript
复制
import psutil
import shutil
import socket
from datetime import datetime

def system_check():
    # 磁盘空间检查
    disk = shutil.disk_usage('/')
    print(f"磁盘使用率:{disk.used/disk.total*100:.1f}%")
    
    # 内存检查
    mem = psutil.virtual_memory()
    print(f"内存使用率:{mem.percent}%")
    
    # CPU检查
    print(f"CPU负载:{psutil.cpu_percent(interval=1)}%")
    
    # 网络检查
    try:
        socket.create_connection((" www.baidu.com ", 80), timeout=5)
        print("网络连接:正常")
    except OSError:
        print("网络连接:异常")
    
    # 系统启动时间
    boot_time = datetime.fromtimestamp(psutil.boot_time())
    print(f"系统已运行:{datetime.now() - boot_time}")

system_check()

案例5:批量图片压缩与重命名

代码语言:javascript
复制
import os
import tarfile
from datetime import datetime
import shutil

def create_backup(source_dirs, backup_dir):
    timestamp = datetime.now().strftime('%Y%m%d_%H%M%S')
    backup_name = f"backup_{timestamp}.tar.gz"
    backup_path = os.path.join(backup_dir, backup_name)
    
    with tarfile.open(backup_path, "w:gz") as tar:
        for source in source_dirs:
            if os.path.isdir(source):
                tar.add(source, arcname=os.path.basename(source))
    
    # 保留最近5个备份
    backups = sorted([f for f in os.listdir(backup_dir) if f.startswith('backup_')])
    for old_backup in backups[:-5]:
        os.remove(os.path.join(backup_dir, old_backup))
    
    return backup_path

backup_path = create_backup(
    ['/etc', '/home/user/Documents'],
    '/backups'
)
print(f"备份已创建:{backup_path}")

案例6:自动化备份脚本

代码语言:javascript
复制
import os
import tarfile
from datetime import datetime
import shutil

def create_backup(source_dirs, backup_dir):
    timestamp = datetime.now().strftime('%Y%m%d_%H%M%S')
    backup_name = f"backup_{timestamp}.tar.gz"
    backup_path = os.path.join(backup_dir, backup_name)
    
    with tarfile.open(backup_path, "w:gz") as tar:
        for source in source_dirs:
            if os.path.isdir(source):
                tar.add(source, arcname=os.path.basename(source))
    
    # 保留最近5个备份
    backups = sorted([f for f in os.listdir(backup_dir) if f.startswith('backup_')])
    for old_backup in backups[:-5]:
        os.remove(os.path.join(backup_dir, old_backup))
    
    return backup_path

backup_path = create_backup(
    ['/etc', '/home/user/Documents'],
    '/backups'
)
print(f"备份已创建:{backup_path}")

通过将这些命令组合使用,可以构建出功能强大的自动化工具,显著提高工作效率,真正实现“事半功倍”的效果。在实际应用中,建议为每个操作添加适当的异常处理和日志记录,增加系统脚本的健壮性,以确保脚本的可靠性和可维护性。

“无他,惟手熟尔”!有需要的用起来。

如果你觉得这篇文章有用,欢迎点赞、转发、收藏、留言、推荐❤!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-07-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Nicholas与Pypi 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 获取与切换工作目录
  • 2. 列出目录内容
  • 3. 创建与删除目录
  • 4. 文件复制与移动
  • 5. 递归目录操作
  • 6. 执行系统命令
  • 7. 带超时的命令执行
  • 8. 环境变量管理
  • 9. 文件权限管理
  • 10. 符号链接操作
  • 11. 获取系统信息
  • 12. 进程管理
  • 13. 系统资源监控
  • 14. 网络连接信息
  • 15. 用户与登录信息
  • 16. 执行Shell命令
  • 17. 网络连接检查
  • 18. 系统时间操作
  • 19. 文件压缩解压
  • 20. 命令行参数解析
  • 21. 系统日志记录
  • 22. 定时任务执行
  • 23. 文件哈希校验
  • 24. 系统信号处理
  • 25. 跨平台路径处理
  • 实战案例:
  • 案例1:系统监控脚本
    • 案例2:日志文件自动清理
    • 案例3:跨平台文件同步工具
    • 案例4:系统健康检查脚本
    • 案例5:批量图片压缩与重命名
    • 案例6:自动化备份脚本
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档