我在ubuntu的 /home/laxmi/Desktop/gold/gold.py 中有一个python程序 gold.py 。 我有一个python程序test.py as 的 test.py
import subprocess
subprocess.Popen("python", "Desktop/gold/gold.py")
我希望这个程序调用gold.py程序并显示gold.py
的结果错误
File "/usr/lib/python2.7/subprocess.py", line 660, in __init__
raise TypeError("bufsize must be an integer")
答案 0 :(得分:2)
你得到TypeError
。由于您没有传递关键字参数,因此第二个参数将被视为缓冲区大小,该大小必须是整数。
更改:
subprocess.Popen("python", "Desktop/gold/gold.py")
要:
subprocess.Popen("python Desktop/gold/gold.py")
以下是subprocess.Popen的文档。第一个参数是唯一需要的参数args
:
args应该是一系列程序参数,否则就是一个 串。默认情况下,要执行的程序是args中的第一项 如果args是一个序列。如果args是一个字符串,则解释为 平台依赖并在下面描述。查看shell和可执行文件 与默认行为的其他差异的参数。除非 除非另有说明,建议将args作为序列传递。
NB:
如果传递单个字符串,则shell必须为True(参见下文)或 否则字符串必须简单地命名要执行的程序而不用 指定任何参数。
所以,如果需要这样做,你可以这样做:
subprocess.Popen("python Desktop/gold/gold.py", shell = True)
请在提供的链接中阅读有关此内在的安全风险。