码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • PythonNote038---python执行shell命令


    Intro

    python执行shell命令的几种方法

    test.py代码如下:

    import sys
    print(sys.argv)
    slice = sys.argv[1]
    print(slice)
    
    • 1
    • 2
    • 3
    • 4

    os

    os.system(“command”)

    • 得不到输出
    • 成功返回0,失败返回其他
    import os
    
    • 1
    os.system(f'python test.py city')
    
    • 1
    0
    
    • 1
    os.system(f'chdir')
    
    • 1
    0
    
    • 1

    os.popen(“command”)方法

    • 返回的是 file read 的对象,对其进行读取 read() 的操作
    • 成功正常打印输出内容,失败啥都没有
    f=os.popen(f'python test.py city0')  # 返回的是一个文件对象
    print(f.read())      
    f.close()
    
    • 1
    • 2
    • 3
    ['test.py', 'city0']
    city0
    
    • 1
    • 2
    f=os.popen('chdir')  # 返回的是一个文件对象
    print(f.read())      
    f.close()
    
    • 1
    • 2
    • 3
    D:\ThereIsNoEndToLearning\Zzz-Temp
    
    • 1

    subprocess.Popen

    • 可以获取执行成功或者报错的标识
    • 能够得到输出信息,但是只能等所有代码执行完,才能获取中间的输出结果
    import subprocess
    
    • 1
    def exe_sh(cmd):
        # cmd = f'/opt/conda/bin/python test.py city0'
        res = subprocess.Popen(cmd, shell=True,
                               stdout=subprocess.PIPE,
                               stdin=subprocess.PIPE,
                               stderr=subprocess.PIPE,
                               encoding='utf8',
                               text=True)
        # stderr = res.stderr.read().decode("gbk")
        # stdout = res.stdout.read().decode("utf8") # 获取标准输出
        stdout, stderr = res.communicate()
        if res.returncode == 0:
            print('执行成功')
            print(stdout)
        else:
            print('执行失败')
            print(stderr)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    exe_sh(f'python test.py city0')
    
    • 1
    执行成功
    ['test.py', 'city0']
    city0
    
    • 1
    • 2
    • 3
    exe_sh('chdir')
    
    • 1
    执行成功
    D:\ThereIsNoEndToLearning\Zzz-Temp
    
    • 1
    • 2

    jupyter magic

    !chdir
    
    • 1
    D:\ThereIsNoEndToLearning\Zzz-Temp
    
    • 1

    如果用jupyter执行且是执行python脚本,优先选这个方法,边执行边打印输出

    for i in ['city0','city2']:
        %run test.py $i
    
    • 1
    • 2
    ['test.py', 'city0']
    city0
    ['test.py', 'city2']
    city2
    
    • 1
    • 2
    • 3
    • 4

                                            2022-08-26 于南京市江宁区九龙湖

  • 相关阅读:
    【彩色图像处理GUI】各种颜色映射、重新调整大小和更改分辨率、伽玛校正,对比度,反转颜色(Matlab代码实现)
    测试和验证有什么区别,怎么划分测试集和验证集
    自动驾驶,是“平视”还是“俯视”?
    聊聊Spring的Aware接口
    Java培训教程JUC强大的辅助类讲解CountDownLatch减少计数
    vue:写一个数组box和list数组,在保留box数组中原有对象的同时,将list数组中每一个对象插入到box数组后面
    疫情下,工业设计公司的机遇与挑战
    Java之线程池的详细解析
    思维分析逻辑 2 DAY
    一篇文章带你学懂Redis
  • 原文地址:https://blog.csdn.net/wendaomudong_l2d4/article/details/126548163
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号