我有下面的代码,我正在使用它来检查程序类转储是否存在于系统上。该程序只返回一个空白。Python中的等价命令
cmd = ["which","class-dump"]
process = subprocess.Popen(cmd, stdout=subprocess.PIPE)
print process.stdout.read()
此代码始终返回空格。从技术上讲,它应该正确吗?
我有下面的代码,我正在使用它来检查程序类转储是否存在于系统上。该程序只返回一个空白。Python中的等价命令
cmd = ["which","class-dump"]
process = subprocess.Popen(cmd, stdout=subprocess.PIPE)
print process.stdout.read()
此代码始终返回空格。从技术上讲,它应该正确吗?
嗯,它看起来像类转储不存在(在你的Python解释器使用的PATH)
我在我的机器上尝试了以下操作,并且完美地工作。
import subprocess
cmd = ["which","java"]
process = subprocess.Popen(cmd, stdout=subprocess.PIPE)
print process.communicate()
这是输出
('/usr/bin/java\n', None)
此代码做同样的事情作为外壳which
命令编程,但它并没有“找到”的符号链接。为了支持这一点,你可以增强isx
函数。
import os.path, itertools
isx = lambda program: lambda folder: (lambda p: \
os.access(p, os.X_OK) and os.path.isfile(p))(os.path.join(folder, program))
def which(program):
try:
return itertools.ifilter(isx(program), os.environ['PATH'].split(':')).next()
except StopIteration:
raise ValueError, 'no executable file named %s found in search path' % (program,)
实施例使用:
>>> which('ls')
'/bin'
>>> which('foo')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 5, in which
ValueError: no executable file named foo found in search path
不'其中类dump'产生在命令行上一个非空输出? –
否,它返回类转储的路径。我想通过代码本身获得路径。 – Amritha