
Python作为一门强大的编程语言,其与操作系统交互的能力使其成为自动化任务和系统管理的理想工具。本文介绍30个Python操作系统命令的使用,高效利用这些命令工作效率翻倍。
使用os.getcwd()获取当前工作目录,os.chdir()切换目录:
import os
print(f"当前目录:{os.getcwd()}") # 输出:/home/user/projects
os.chdir('/tmp') # 切换到/tmp目录os.listdir()可列出目录内容,结合os.path模块可获取完整路径:
files = [os.path.join(os.getcwd(), f) for f in os.listdir('.') if f.endswith('.py')]使用os.makedirs()创建多级目录,os.rmdir()删除空目录:
os.makedirs('project/data/raw', exist_ok=True) # 递归创建目录
os.rmdir('project/docs') # 删除空目录shutil模块提供高级文件操作:
import shutil
shutil.copy2('source.txt', 'backup/source.txt') # 保留元数据
shutil.move('old.txt', 'new.txt') # 重命名或移动文件处理目录树使用shutil.copytree()和shutil.rmtree():
shutil.copytree('src', 'backup/src') # 复制整个目录树
shutil.rmtree('temp') # 递归删除目录及其内容subprocess.run()是执行系统命令的最佳方式:
import subprocess
result = subprocess.run(['ls', '-l'], capture_output=True, text=True)
print(result.stdout)为命令添加超时控制:
try:
subprocess.run(['ping', 'baidu.com'], timeout=5, check=True)
except subprocess.TimeoutExpired:
print("命令执行超时")读取和设置环境变量:
print(os.environ['PATH']) # 读取PATH变量
os.environ['TEMP_DIR'] = '/tmp' # 设置临时变量(仅当前进程有效)修改文件权限(Linux/macOS):
os.chmod('script.sh', 0o755) # 设置可执行权限
os.chown('file.txt', uid, gid) # 修改文件所有者创建和管理符号链接:
os.symlink('target.txt', 'link.txt') # 创建符号链接
print(os.path.islink('link.txt')) # 检查是否为链接使用platform模块检测系统类型:
import platform
print(f"系统类型:{platform.system()}") # 输出:Linux/Windows/Darwin
print(f"Python版本:{platform.python_version()}")psutil库提供跨平台进程管理:
import psutil
for proc in psutil.process_iter(['pid', 'name', 'username']):
print(proc.info) # 打印所有进程信息获取CPU、内存和磁盘使用情况:
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")查看网络接口和连接:
net_io = psutil.net_io_counters()
conns = psutil.net_connections()
print(f"发送字节数:{net_io.bytes_sent}")
print(f"活跃连接数:{len(conns)}")获取系统用户信息:
users = psutil.users()
print(f"当前登录用户:{users[0].name}")
print(f"登录时间:{datetime.fromtimestamp(users[0].started)}")import subprocess
result = subprocess.run(['ls', '-l'], capture_output=True, text=True)
print(result.stdout)import socket
socket.gethostbyname('google.com') # 解析域名import time
print(time.strftime('%Y-%m-%d %H:%M:%S')) # 格式化时间import zipfile
with zipfile.ZipFile('archive.zip', 'w') as z:
z.write('file.txt') # 创建压缩包import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--input', help='输入文件')
args = parser.parse_args()import logging
logging.basicConfig(filename='app.log', level=logging.INFO)
logging.info('系统启动')import sched, time
s = sched.scheduler(time.time, time.sleep)
s.enter(5, 1, print, ('5秒后执行',))
s.run()import hashlib
with open('file.txt', 'rb') as f:
print(hashlib.md5(f.read()).hexdigest())import signal
def handler(signum, frame):
print("收到终止信号")
signal.signal(signal.SIGTERM, handler)from pathlib import Path
config_path = Path.home() / '.config' / 'myapp' # 跨平台家目录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()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)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')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()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}")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}")通过将这些命令组合使用,可以构建出功能强大的自动化工具,显著提高工作效率,真正实现“事半功倍”的效果。在实际应用中,建议为每个操作添加适当的异常处理和日志记录,增加系统脚本的健壮性,以确保脚本的可靠性和可维护性。
“无他,惟手熟尔”!有需要的用起来。
如果你觉得这篇文章有用,欢迎点赞、转发、收藏、留言、推荐❤!
本文分享自 Nicholas与Pypi 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!