系统('主机名')从MATLAB到Python

时间:2015-04-13 17:57:47

标签: python matlab code-translation

将以下MATLAB命令转换为Python的最佳方法是什么?

[~,hostname] = system('hostname');

2 个答案:

答案 0 :(得分:2)

您正在寻找socket界面中的gethostname(),“可在所有现代Unix系统,Windows,MacOS以及可能的其他平台上使用。”(来自docs):

>>> import socket
>>> socket.gethostname()
'DK07'

如果gethostname()由于某种原因失败,则会引发异常。然而,如果名称被省略或为空,则会有所不同,在这种情况下,它被解释为本地主机。

另一个便携式等效物(仅为了完整性)是

>>> import platform
>>> platform.node()
'DK07'

您还应该看一下Cong Ma's answer的好例子。

答案 1 :(得分:1)

举一个关于Kong的解释的例子,你总是可以将系统调用包装在try块中,如下所示:

import sys
import errno
try:
    hostname = socket.gethostname()
except socket.error as s_err:
    print >> sys.stderr, ("error: gethostname: error %d (%s): %s" %
                          (s_err.errno, errno.errorcode[s_err.errno],
                           s_err.strerror))

这会将错误信息格式化为error: gethostname: error 13 (EACCES): Permission denied,尽管这只是一种假设情况。


如果要以system()的方式使用外部进程(但不生成shell),可以使用subprocess执行命令:

import subprocess
cmd = subprocess.Popen(["hostname"], stdout=subprocess.PIPE,
                       stderr=subprocess.PIPE)
cmdout, cmderr = cmd.communicate()
print "Command exited with code %d" % cmd.returncode
print "Command output: %s" % cmdout