python';s`os.system`是否引发过异常?

python';s`os.system`是否引发过异常?,python,exception,command-line,exception-handling,operating-system,Python,Exception,Command Line,Exception Handling,Operating System,Python名声远扬的os.system会引发异常吗?如果是这样的话,是哪一个呢?在POSIX系统上,它似乎是一个直通到system()(从Python 2.7.1的posixmodule.c中列出): 简短回答:是的: >>> import os >>> os.system(None) TypeError ... 详细回答:看看这里,看看如何避免使用os.system os.system如果没有一个字符串参数,则抛出一个TypeError。如果fork由于

Python名声远扬的
os.system
会引发异常吗?如果是这样的话,是哪一个呢?

在POSIX系统上,它似乎是一个直通到
system()
(从Python 2.7.1的posixmodule.c中列出):

简短回答:是的:

>>> import os
>>> os.system(None)
TypeError ...

详细回答:看看这里,看看如何避免使用
os.system

os.system
如果没有一个字符串参数,则抛出一个
TypeError
。如果
fork
由于资源或ulimit限制而失败,它将返回
-1
。如果参数在某些方面无效(如不存在的命令),它将返回一个高错误代码。除了前面提到的
TypeError
os.system
不会抛出任何异常。

如果你问它在你调用的进程以错误结束时是否抛出异常,答案是否,你可以用
os.system()
调用一个程序,让它出错,你永远不会知道


这就是为什么您应该使用
子流程
模块。

os.system()
不再受到重视……我意识到这只是一个例子。我不知道任何其他可能的异常类型;'错误的字符串或unicode参数都只是传递给shell。还是。。。最好避免使用os.system。这是一个实现细节——除非文档明确说明了它会引发或不会引发哪些异常,否则其他实现没有理由不能在特定条件下选择引发异常。这就是为什么人们应该熟悉自己使用的运行时的原因。我假设是CPython,因为没有提到更具体的运行时环境(Jython,PyPi)。2.7.1的文件没有提到应该/可能提出的例外情况。
>>> import os
>>> os.system(None)
TypeError ...