从python 3.3运行terminal命令

从python 3.3运行terminal命令,python,shell,python-3.x,terminal,command,Python,Shell,Python 3.x,Terminal,Command,我正在尝试从Python3.3(MacOSX10.7.5)运行wkhtmltopdf(一个将html转换为pdf:)命令 当使用以下命令直接在终端上运行时,例程就像一个符咒: wkhtmltopdf http:google.com /Users/ME/Desktop/google.pdf 其中http:google.com是将在目标文件:/Users/ME/Desktop/google.pdf中转换为pdf的html 但是,从python调用shell时: import subprocess

我正在尝试从Python3.3(MacOSX10.7.5)运行wkhtmltopdf(一个将html转换为pdf:)命令

当使用以下命令直接在终端上运行时,例程就像一个符咒:

wkhtmltopdf http:google.com /Users/ME/Desktop/google.pdf
其中http:google.com是将在目标文件:/Users/ME/Desktop/google.pdf中转换为pdf的html

但是,从python调用shell时:

import subprocess

subprocess.call(["wkhtmltopdf http:google.com /Users/ME/Desktop/google.pdf"])
我得到:

> Traceback (most recent call last):   File "<pyshell#5>", line 1, in
<module>
    subprocess.call(["wkhtmltopdf http:google.com /Users/thenoze/Desktop/google.pdf"])   File
"/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/subprocess.py",
line 523, in call
    with Popen(*popenargs, **kwargs) as p:   File "/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/subprocess.py",
line 824, in __init__
    restore_signals, start_new_session)   File "/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/subprocess.py",
line 1448, in _execute_child
    raise child_exception_type(errno_num, err_msg) FileNotFoundError: [Errno 2] No such file or directory: 'wkhtmltopdf http:google.com /Users/ME/Desktop/google.pdf'
>回溯(最后一次调用):文件“”,第1行,在
subprocess.call([“wkhtmltopdf http:google.com/Users/thenoze/Desktop/google.pdf”])文件
“/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/subprocess.py”,
523号线,待命
使用Popen(*popenargs,**kwargs)作为p:File“/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/subprocess.py”,
第824行,在初始化中__
还原信号,启动新会话文件“/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/subprocess.py”,
第1448行,in_execute_child
引发子项异常类型(errno\u num,err\u msg)FileNotFoundError:[errno 2]没有此类文件或目录:“wkhtmltopfd http:google.com/Users/ME/Desktop/google.pdf”

-->任何关于如何格式化我的subprocess.call()的线索?

将命令行参数作为列表项分开:

subprocess.call(["wkhtmltopdf", "http:google.com", "/Users/ME/Desktop/google.pdf"])

否则,
wkhtmltopdf。。。google.pdf
被视为程序路径,而不是
wkhtmltopdf

将命令行参数分隔为列表项:

subprocess.call(["wkhtmltopdf", "http:google.com", "/Users/ME/Desktop/google.pdf"])

否则,
wkhtmltopdf。。。google.pdf
被视为程序路径,而不是
wkhtmltopdf

感谢您的关注。似乎如果我在终端窗口中直接用python运行它,效果会非常好。但是,在python例程中使用时,它无法识别“wkhtmltopdf”。我买它是因为终端中的路径与作为*.py运行时的python路径不同。但它也不起作用。你认为可能是什么?谢谢你调查。似乎如果我在终端窗口中直接用python运行它,效果会非常好。但是,在python例程中使用时,它无法识别“wkhtmltopdf”。我买它是因为终端中的路径与作为*.py运行时的python路径不同。但它也不起作用。你认为可能是什么?