You need to enable JavaScript to run this app. 如何通过Python执行Shell命令实现Linux下目录创建与文件拷贝操作
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Python执行Shell命令实现Linux下目录创建与文件拷贝操作

Linux环境下通过Python完成指定系统目录、文件操作的实现方法

核心需求说明

  • 目标场景为Linux系统,替代Windows下通过CMD完成的同类操作,通过Python调用系统能力完成指定操作
  • 操作前置要求:通过su root获取root权限,保障系统目录操作的权限合规
  • 操作明细:
    • 在/var目录下创建名为hi的文件夹
    • 将/var/test路径下的myphone.txt文件复制至/etc/test目录
    • 校验/root/test路径下是否存在myphone.txt文件,若存在则将其复制到/lib64/telphone目录

实现注意点

  • 上述操作涉及系统级目录的写入修改,普通用户权限无法完成,需确保执行Python脚本的进程具备root权限
  • 直接在脚本中调用su root会触发交互式密码输入,无法在非交互式脚本流程中正常完成,需提前为执行用户配置sudo免密权限,脚本内自动完成提权

具体实现代码

import os
import subprocess

# 校验当前进程权限,非root则自动通过sudo提权重跑
if os.geteuid() != 0:
    exit(subprocess.call(['sudo', 'python3', __file__]))

# 1. 创建/var/hi目录,目录已存在则不报错
os.makedirs('/var/hi', exist_ok=True)

# 2. 复制/var/test/myphone.txt到/etc/test目录
os.makedirs('/etc/test', exist_ok=True)
source1 = '/var/test/myphone.txt'
if os.path.exists(source1):
    subprocess.run(['cp', source1, '/etc/test/'], check=True)

# 3. 按条件复制/root/test/myphone.txt到目标目录
os.makedirs('/lib64/telphone', exist_ok=True)
source2 = '/root/test/myphone.txt'
if os.path.exists(source2):
    subprocess.run(['cp', source2, '/lib64/telphone/'], check=True)

补充说明

代码中未采用拼接Shell字符串执行的方式,而是通过传入独立参数调用系统命令、结合os模块完成路径判断与目录创建,可有效规避命令注入风险;代码中exist_ok=True参数可避免目录已存在时抛出异常,check=True参数可在命令执行失败时主动抛出报错,方便定位问题。

内容的提问来源于stack exchange,提问作者henrry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.24 14:54:03