Python 子进程调用失败

Python 子进程调用失败,python,macos,subprocess,Python,Macos,Subprocess,子进程调用不起作用。这是在MacOSX中完成的。 知道为什么会发生这种情况吗?问题出在哪里 问题是~/下载路径。~由shell环境扩展,在调用subprocess.call时,该环境未启用。下面是问题的简化演示: import shlex,subprocess,os cmd = "/Applications/LibreOffice.app/Contents/MacOS/swriter --headless --invisible --convert-to pdf:writer_pdf_Expor

子进程调用不起作用。这是在MacOSX中完成的。
知道为什么会发生这种情况吗?

问题出在哪里

问题是~/下载路径。~由shell环境扩展,在调用
subprocess.call
时,该环境未启用。下面是问题的简化演示:

import shlex,subprocess,os
cmd = "/Applications/LibreOffice.app/Contents/MacOS/swriter --headless --invisible --convert-to pdf:writer_pdf_Export --outdir ~/Downloads ~/Downloads/HS303.xlsx"
#This works
os.popen(cmd)
#This doesnot work
subprocess.call(shlex.split(cmd))

请澄清“不工作”。有任何子流程调用可以工作吗?您得到了什么结果,异常?我确实检查了_输出,但它打印了“”,答案发布在下面
>>> import shlex, subprocess, os, os.path
>>> cmd = "ls ~/Downloads"
>>> print os.popen(cmd).read()
ubuntu-11.04-desktop-i386.iso
ubuntu-11.04-server-i386.iso

>>> print subprocess.check_output(shlex.split(cmd))
ls: cannot access ~/Downloads: No such file or directory
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/subprocess.py", line 537, in check_output
    raise CalledProcessError(retcode, cmd, output=output)
subprocess.CalledProcessError: Command '['ls', '~/Downloads']' returned non-zero exit status 2
import shlex, subprocess, os, os.path
cmd = 'ls ' + os.path.expanduser('~/Downloads')
print subprocess.check_output(shlex.split(cmd))

cmd = 'ls ~/Downloads'
print subprocess.check_output(cmd, shell=True)