Python的`os.system`会抛出异常吗?
大家都知道Python里面有个很有名的功能叫做os.system
,那么这个功能会不会出错呢?如果会的话,可能会出现哪些错误呢?
4 个回答
4
os.system
这个函数如果没有传入一个字符串参数,就会报一个叫 TypeError
的错误。如果因为资源不足或者系统限制(叫 ulimit)导致无法创建新进程,它会返回 -1
。如果传入的参数有问题,比如命令不存在,它会返回一个比较大的错误代码。除了前面提到的 TypeError
,os.system
不会抛出其他的异常。
5
在POSIX系统上,这似乎直接调用了system()
这个函数(这是从Python 2.7.1的posixmodule.c文件中列出的内容):
static PyObject *
posix_system(PyObject *self, PyObject *args)
{
char *command;
long sts;
if (!PyArg_ParseTuple(args, "s:system", &command))
return NULL;
Py_BEGIN_ALLOW_THREADS
sts = system(command);
Py_END_ALLOW_THREADS
return PyInt_FromLong(sts);
}
10
简短的回答:是的。
>>> import os
>>> os.system(None)
TypeError ...
详细的回答:可以去这里看看 http://docs.python.org/library/subprocess.html#subprocess-replacements,了解如何避免使用 os.system
。