我想询问是否有任何解决方案来处理Python中不支持的系统命令。 E.g:
import os
os.system("svn")
在这段代码中我尝试使用svn命令,我收到一个错误:
"svn" is not recognized as an internal or external comand...
很明显,因为我没有安装svn,这就是为什么我有这个错误等等。问题不是关于“svn”,而是一般命令,这是操作系统不支持的。是否有可能在Python中处理此类事件,如果出现这种情况,系统将不会支持此命令。
答案 0 :(得分:1)
os.system
完成后返回许多不同的代码,但subprocess.call
可以被捕获。
try:
subprocess.call(['svn'])
except OSError:
print 'an error occurred'
答案 1 :(得分:0)
我认为不推荐使用os.system,请参阅此页面以了解子进程:https://docs.python.org/2/library/subprocess.html#replacing-older-functions-with-the-subprocess-module
使用以下代码:
import subprocess
import sys
try:
retcode = subprocess.call("svn")
if retcode < 0:
print >>sys.stderr, "Child was terminated by signal", -retcode
else:
print >>sys.stderr, "Child returned", retcode
except OSError as e:
print >>sys.stderr, "Execution failed:", e
你得到错误:
执行失败:[Errno 2]没有这样的文件或目录
答案 2 :(得分:0)
使用subprocess.check_call
,抓住CalledProcessError
和FileNotFoundError
:
from subprocess import check_call, CalledProcessError
try:
check_call(["svn"])
except CalledProcessError as e:
print("There was an error calling {}".format(e.cmd))
except FileNotFoundError as e:
print("Invalid command")
如果命令返回非零退出状态,它也会引发错误。
os.system
命令与os.popen等一样被折旧。你应该总是使用子进程模块。