系统('hostname')从 MATLAB 到 Python
System('hostname') from MATLAB to Python
将以下 MATLAB 命令转换为 Python 的最佳方法是什么?
[~,hostname] = system('hostname');
您正在寻找 gethostname()
from thesocket
interface, which is "available on all modern Unix systems, Windows, MacOS, and probably additional platforms." (from the docs):
>>> import socket
>>> socket.gethostname()
'DK07'
如果 gethostname()
由于某种原因失败,它会引发异常。但是,如果名称被省略或为空,这就不同了,在这种情况下,它被解释为本地主机。
另一个可移植的等价物(只是为了完整起见)是
>>> import platform
>>> platform.node()
'DK07'
您还应该看看 中的一个很好的例子。
举个 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
:[=16= 执行命令]
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
将以下 MATLAB 命令转换为 Python 的最佳方法是什么?
[~,hostname] = system('hostname');
您正在寻找 gethostname()
from thesocket
interface, which is "available on all modern Unix systems, Windows, MacOS, and probably additional platforms." (from the docs):
>>> import socket
>>> socket.gethostname()
'DK07'
如果 gethostname()
由于某种原因失败,它会引发异常。但是,如果名称被省略或为空,这就不同了,在这种情况下,它被解释为本地主机。
另一个可移植的等价物(只是为了完整起见)是
>>> import platform
>>> platform.node()
'DK07'
您还应该看看
举个 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
:[=16= 执行命令]
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