os.path.exists()
在做任何事情之前,我经常用来检查文件是否存在.
我遇到过一种情况,我在调用已配置的env路径中的可执行文件,因此可以在不指定的情况下调用它abspath
.
在调用之前是否可以执行某些操作来检查文件是否存在?(我可能会重新开始try/except
,但首先我正在寻找替代品os.path.exists()
)
顺便说一句 - 我在Windows上这样做.
Tre*_*out 14
您可以获取PATH环境变量,并尝试路径中每个目录中的.exe的"exists()".但这可能会表现得非常糟糕.
查找notepad.exe的示例:
import os
for p in os.environ["PATH"].split(os.pathsep):
print os.path.exists(os.path.join(p, 'notepad.exe'))
Run Code Online (Sandbox Code Playgroud)
更聪明的例子:
if not any([os.path.exists(os.path.join(p, executable) for p in os.environ["PATH"].split(os.pathsep)]):
print "can't find %s" % executable
Run Code Online (Sandbox Code Playgroud)
您是否有特殊原因要避免异常?(除了教条?)
用 Carl Meyer 对 PATHEXT 的评论扩展 Trey Stout 的搜索:
import os
def exists_in_path(cmd):
# can't search the path if a directory is specified
assert not os.path.dirname(cmd)
extensions = os.environ.get("PATHEXT", "").split(os.pathsep)
for directory in os.environ.get("PATH", "").split(os.pathsep):
base = os.path.join(directory, cmd)
options = [base] + [(base + ext) for ext in extensions]
for filename in options:
if os.path.exists(filename):
return True
return False
Run Code Online (Sandbox Code Playgroud)
编辑:感谢 Aviv(在我的博客上),我现在知道有一个 Twisted 实现:twisted.python.procutils.which
编辑:在Python 3.3及更高版本中,标准库中有shutil.which() 。
归档时间: |
|
查看次数: |
82144 次 |
最近记录: |