精华内容
下载资源
问答
  • 运行cmd开始时,使用os.popen()执行命令,但是该命令需要手动修改运行目录。此方案被我直接丢弃了。单开进程那么自然想到通过启动进程的方式来实现,Python有对进程的封装subprocess,可以通过创建...

    之前是想写一个微信控制程序,通过登录网页微信,可以直接执行命令行代码。也不用ssh登录了,想法很方便。

    但是现实很残酷,微信登录这块基本没有问题,已经有大佬写好了,但是命令行执行遇到问题了。

    运行cmd

    开始时,使用os.popen()执行命令,但是该命令需要手动修改运行目录。此方案被我直接丢弃了。

    单开进程

    那么自然想到通过启动进程的方式来实现,Python有对进程的封装subprocess,可以通过创建Popen对象来实现。我只要单开一个bash,与它进行交互就好啦。

    简单实现如下:p = subprocess.Popen("/bin/bash", shell=True, stdin=subprocess.PIPE, stderr=subprocess.PIPE, stdout=subprocess.PIPE)while True: c = input() c += os.linesep p.stdin.write(c.encode("utf8")) print(out_s.decode("utf8"), end="")

    然后,马上就有遇到问题了,输出流一直拿不到内容,被阻塞了。

    刷新缓冲区

    被阻塞有两种情况,一输入流阻塞,所以没有输出,二输出流阻塞。看到网上有的将输入流关闭就可以了:p.stdin.close()

    但是关闭后就不能再次运行命令了,通过查看其对象方法,发现可以直接刷新缓冲区,很好p.stdin.flush()

    但是发现读取到的文件只有一行,很明显,没有读完

    循环读取

    需要循环读取输出缓冲区的内容。while True: out_s = p.stdout.readline() print(out_s.decode("utf8"), end="")

    新的问题出现了,循环怎么结束啊?当缓冲区没有内容时,readline方法会阻塞等待。

    读取阻塞

    很好,找了半天也没找到解决阻塞的办法。那就只能靠自己了,既然它要阻塞,那就随他阻塞好了,我单开一个线程去读取,让它一直阻塞去吧。

    解决后的完整测试代码:import subprocessimport osimport threadingp = subprocess.Popen("/bin/bash", shell=True, stdin=subprocess.PIPE, stderr=subprocess.PIPE, stdout=subprocess.PIPE)def test(): global p while True: print(p.stdout.readline().decode("utf8"), end="")threading.Thread(target=test).start()while True: c = input() c += os.linesep p.stdin.write(c.encode("utf8")) p.stdin.flush()

    很好,问题解决了,简单封装一个工具类吧。

    注意:如果输入一个不存在的命令,输出内容不在stdout流中,要到stderr中获取。此方案暂时还不支持sudo命令,回头在研究研究

    至此,其实还有一个小问题,我怎么能知道哪些返回是同一条命令所返回的呢?就这个微信工具来说,自然可以直接通过时间判断,若超过1s没有,则认为是一组,统一返回。感觉有些牵强,暂时没有想到更好的解决办法。

    最后奉上工具链接:

    展开全文
  • python执行cmd命令

    2021-01-07 10:07:18
    python 操作cmd 通常使用os模块执行cmd os.system(执行命令) 控制台可以打印输出结果但无法获取,默认情况下代码0代表执行成功,如果执行的进程自定义了成功返回值,可能就不是0了。 os.popen(执行命令) ...

    本文首发地址:https://www.dawnsite.cn/archives/173.html

    python 操作cmd

    通常使用os模块执行cmd

    1. os.system(执行的命令)

      image-20201202151348152

      控制台可以打印输出结果但无法获取,默认情况下代码0代表执行成功,如果执行的进程自定义了成功返回值,可能就不是0了。

    2. os.popen(执行的命令)

      image-20201202151249098

      输出后的内容是一个对象,默认是以读的方式打开,可以通过读取文件对象,获取返回的信息内容。

    展开全文
  • python 执行cmd命令

    千次阅读 2018-03-09 01:59:52
    def jump(distance): press_time = distance * 1.35 press_time = int(press_time) cmd = 'adb shell input swipe 320 410 320 410 ' + str(press_time) print(cmd) os.system(cmd)
    def jump(distance):
        press_time = distance * 1.35
        press_time = int(press_time)
        cmd = 'adb shell input swipe 320 410 320 410 ' + str(press_time)
        print(cmd)
        os.system(cmd)

    展开全文
  • python 运行 cmd命令

    2015-02-07 20:42:15
    import os os.system('ipconfig') os.system('ping www.baidu.com -t')
    import os
    os.system('ipconfig')
    os.system('ping www.baidu.com -t')


    展开全文
  • python执行cmd命令

    2020-08-19 14:11:40
    我们在做手机端自动化的时候有时候可能会遇到需要执行cmd命令完成用例,我们一起学习下,通过python脚本执行cmd命令 cmd是什么 cmd是command的缩写.即命令提示行(CMD),是在OS / 2 , Win为基础的操作系统(包括...
  • 关于Python执行cmd命令输出乱码解决方法
  • python 执行cmd命令时,突然发现所有的命令一下子都执行了。 前面的命令还没有执行完成,后面的命令可能早就执行结束了。 为了实现:上一个命令结束之后再执行下一个命令,让cmd命令按顺序依次执行 p = ...
  • 使用python执行cmd命令

    2020-04-15 13:13:20
    python里面调用cmd命令只需要导入一个os库,然后按照我上面的格式来就行啦~ dir可以换成其他命令,如果需要得到执行命令后的返回值的话: import os response = os.popen("dir") for i in response: print(i) 因为...
  • cmd命令 # 有没有http都是可以的 start www.baidu.com python import os a = os.system('start www.baidu.com') if a == 0: # 成功执行命令 print(a, '成功执行命令') 2、chrome浏览器打开百度 dos命令: start...
  • PyQt5 pyqt5 python运行cmd命令 传入参数 获取cmd结果 重定向 运行python文件 py脚本 写在前面 如果运行的cmd输出不多,可以考虑使用subprocess(也可以重定向) 我选择os.popen()的原因是我需要运行的py文件在cmd会...
  • python运行cmd命令的方法

    千次阅读 2018-08-29 01:10:10
    运行环境为 Python3 我工作的python环境是2.7 这一块一般和python装饰器配合使用,python也需要监控某个类或者函数的状态和执行时间。或者直接处理进程,这些函数都比较实用。 最硬的调用 import os os.system...
  • python执行cmd命令的几种方法

    千次阅读 2019-07-14 18:43:44
    command是要执行命令,该方法没有返回值,并且会阻塞程序。如果不需要获取命令行的输出的话,可以在命令前使用start,这样函数就会立即返回,而不会阻塞程序。 os.system('start python') 2、os.popen(command) ...
  • python 执行cmd命令时中文乱码问题

    千次阅读 2019-02-14 20:54:01
    在pycharm里执行 os.system("echo 你好") 时返回乱码 解决方法: 改成 os.system("echo 你好".encode('utf-8').decode('gbk'))    
  • 问题根因: 操作系统是Windows,IDE是默认UTF-8编码的。 现在想通过cmd打开具有中文路径的文件,用os.system(command)打不开,返回的错误是乱码看不懂。 ...将你的命令也就是字符串编码成gb231...
  • 由于最近呢,比较得空。无意中浏览到新闻XXX事件(你懂的)...所以呢,我就迫不及待的到手了,使用最近所学的python研究怎么破解这个rar解压密码。 下面呢,贴上我初步的密码试探。 import os for i in range(0,...
  • 在windows7平台下,python项目中使用os.system("xx.exe")执行应用程序,如果程序崩溃后,很可能会弹出“xx.exe已停止运行”的对话框,然后python脚本就阻塞在这里,在我们鼠标没有点击结束该应用之前,是没有办法...
  • Python调用cmd命令运行tesseract-ocr了解tesseract-ocr使用方法python调用cmd命令python调用cmd命令执行tesseract-ocr 了解tesseract-ocr使用方法 tesseract-ocr安装 去wiki下载合适的版本安装,我个人根据实际...
  • 主要介绍了详解python调用cmd命令三种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • 1>问题来由:因为之前 vim 环境配置没有配好,所以才有了这个想法:通过脚本连续执行 cmd 命令。2>问题描述:(附上代码)import osdef command_line():#os.system('cmd')cmd_path = [r"E:\tools\vim80-586w32\vim\...
  • 目前我使用到的python执行cmd的方式有三种使用os.system("cmd")该方法在调用完shell脚本后,返回一个16位的二进制数,低位为杀死所调用脚本的信号号码,高位为脚本的退出状态码,即脚本中“exit 1”的代码...
  • python实现调用cmd命令

    2017-04-13 13:12:02
    Python 执行cmd命令,实现命令行下的操作。简单易懂。可当做范例学习,扩展。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 105,272
精华内容 42,108
关键字:

python执行cmd命令

python 订阅