python - 使用原始字符串运行子进程

标签 python subprocess

这有点奇怪,但我正在运行一个名为 scrapebox 的程序,scrapebox 有一个自动插件,可以创建一个文件来自动运行其中的一些东西。为了从 cmd 运行自动程序,我将 cd 进入程序目录,然后键入:

Scrapebox.exe "automator:1.sbaf"

它首先会启动Scrapebox这个程序,一旦打开,它会立即运行自动化文件。

这是一个更大难题中的一小部分。我试图在更大的 Python 脚本中调用它。

import os
import subprocess
..........
..........
..........
print "Opening Scrapebox now, please wait."

os.chdir('C:\Users\Admin\DomainDB\Programs\ScrapeBox')

print
print "Current working dir : %s" % os.getcwd()
print

subprocess.call(["Scrapebox.exe"])
#"automator:1.sbaf"

print "Scrapebox finished. Moving on."

当我按上面的方式运行它时,它会工作并打开 scrapebox。但是,我真正需要做的是这样的:

subprocess.call(["Scrapebox.exe "automator:1.sbaf""])

当我这样做时,它会抛出一个语法错误。那么我怎样才能将它作为原始字符串输入,就好像它被输入到 cmd 中一样?

最佳答案

如果要在字符串中嵌入双引号,可以使用多种方法之一。另外要传递所有参数的单个字符串,不要作为列表传递[]:

subprocess.call("Scrapebox.exe \"automator:1.sbaf\"")
subprocess.call('Scrapebox.exe "automator:1.sbaf"')

Python 可以在字符串周围使用单引号或双引号。您还可以对字符串进行三重引号(在开始和结束处使用三个单引号或双引号),这也允许换行,但此处不需要。

如果传递一个参数列表,每个参数都应该是列表的一个元素:

subprocess.call(['Scrapebox.exe','automator:1.sbaf'])

关于python - 使用原始字符串运行子进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33852378/

相关文章:

python - 如何 fork 并执行服务器并等待它准备好?

linux - 我怎样才能让 subprocess 或 Popen 显示它刚刚运行的命令行?

python - QSTK 的 eventprofiler 函数绘制不正确

python - 如何在列表内部的 python 中运行嵌套循环,以便外循环始终从列表的下一个元素开始,依此类推

python - 使用奇怪的编码从Python中的.txt url收集数据

python - 如何从 Python subprocess.check_output() 捕获异常输出?

python - 为什么调用 time.sleep 或 subprocess.Popen 后 Python 操作会慢 30 倍?

python - 在Python中从Unicode文本中过滤出多个表情符号

python - 为什么 python 在导入 A.B.C 时将 'A' 放入全局命名空间

python - Pyinstaller窗口化问题