python';s`os.system`是否引发过异常?
Python名声远扬的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由于
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 ...