【问题标题】:Use python to run multiple commands inside the wine cmd?使用python在wine cmd中运行多个命令?
【发布时间】:2017-06-16 03:14:17
【问题描述】:

使用 python 我可以让其中任何一个工作:

subprocess.call(['wine', 'cmd'])
os.system("wine cmd")

我使用的是 Ubuntu 和 python 3.5,一旦我进入 wine cmd 提示符,我就不能再运行命令,不是我在网上看到的运行多个命令的方法,它们不会出错,它只是打开 cmd 并暂停,我认为它一旦打开 cmd 就将其视为正在运行的命令,并等待继续执行下一个命令,它假设是针对 shell 而不是 wine cmd,然后我如何在 wine 中运行命令cmd一旦打开?

编辑:基本上任何时候我运行一个命令,需要从该命令中进一步的用户输入,我如何在该命令内部进行交互?

【问题讨论】:

  • 任何帮助将不胜感激。
  • 如果你想远程控制一个wine程序并添加一些输入,使用AutoHotKey

标签: python cmd subprocess wine


【解决方案1】:

您可以按照此处的示例代码从 DOS 通过 BASH 构建到 python。我将代码剪切并粘贴到 python 2.7 中,它可以工作,但你可能想在 3.5 上确认

如果您特别需要交互而不仅仅是运行 DOS 命令,那么您可以使用 subprocess.Popen.communicate 与您的脚本进行交互,然后该脚本与 wine/dos 进行交互。

import subprocess, os, stat
from subprocess import Popen
from subprocess import PIPE
from subprocess import check_output
command_script="/tmp/temp_script.sh"
f1 = open(command_script,'w')
f1.write("#!/bin/bash\n")
#to run a dos command
#f1.write(r'WINEPREFIX=/path/tp/wine/prefix wine cmd /c @mydoscommand argval1'+'\n')
#for example
f1.write(r'wine cmd /c @echo Hello_world'+'\n')
#or to run a specifically pathed executable
#f1.write(r'WINEPREFIX=/path/tp/wine/prefix wine "c:\\Program Files (x86)\\path\\to\\executable.exe" additionalargs '+'\n')
f1.close()
st = os.stat(command_script)
os.chmod(command_script, st.st_mode | stat.S_IEXEC)
p = Popen(command_script, stdin=PIPE, stdout=PIPE, stderr=PIPE)
output, err = p.communicate(b"input data that is passed to subprocess' stdin")
rc = p.returncode
print output
os.remove(command_script)

看看我从Running windows shell commands with pythoncalling-an-external-command-in-python 截取一些代码的答案

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-12
    • 1970-01-01
    • 1970-01-01
    • 2018-04-08
    • 1970-01-01
    • 1970-01-01
    • 2019-06-28
    • 1970-01-01
    相关资源
    最近更新 更多