python错误代码处理
python error code handling
我想查看安装的发行版:
def check_linux():
if subprocess.call(['apt-get', '-v']) == 0: #if true
print('apt')
else: #if false
print('rpm')
check_linux()
print('done')
当我在 debian 发行版中尝试这个时,一切正常,我得到:
"apt" 和 "done" 在标准输出。但是如果我 运行 这个代码在 fedora 有错误代码并且 "done" 没有打印(脚本结束得太早)。
如何解决这个问题?
subprocess.call
如果找不到 运行 的可执行文件,则会引发异常,Fedora 和 apt-get
就是这种情况。您可以遍历 PATH
或尝试任何其他常用技巧,但幸运的是 Python 在其标准库中已经具有函数 platform.linux_distribution(),例如:
>>> import platform
>>> platform.linux_distribution()
('CentOS Linux', '7.0.1406', 'Core')
您可以查看它的实现方式 here。
使用try/except
。使用此方法,您只需 try
到 运行 apt
。如果这不起作用(即--except
)尝试运行 rpm
。如果这些都不起作用,那么我建议使用 Bereal 建议的默认值——使用默认值 platform.linux_distribution
。
但是,由于很可能至少安装了其中一个,我认为您最好使用 try
方法。此外,您以后可以包含 yum
等包。
try/except
(通用)的示例代码:
try:
x = input("Please input a number.\n")
except ValueError: # Someone put in a character
print 'Not a valid number.\n'
在您的场景中:
import os
package_manager = ""
def check_linux():
try:
os.system("apt")
package_manager = "apt"
except:
os.system("rpm")
package_manager = "rpm"
except: # WARNING! NEVER USE EXCEPT WITHOUT AN ERROR EXCEPT IN THE SIMPLEST OF SCENARIOS. When I find the correct error for this situation I will edit my code.
os.sytem("yum")# ...etc, etc.
package_manager = "yum"
print package_manager
check_linux()
print 'done'
编码愉快!祝你好运!
我想查看安装的发行版:
def check_linux():
if subprocess.call(['apt-get', '-v']) == 0: #if true
print('apt')
else: #if false
print('rpm')
check_linux()
print('done')
当我在 debian 发行版中尝试这个时,一切正常,我得到: "apt" 和 "done" 在标准输出。但是如果我 运行 这个代码在 fedora 有错误代码并且 "done" 没有打印(脚本结束得太早)。 如何解决这个问题?
subprocess.call
如果找不到 运行 的可执行文件,则会引发异常,Fedora 和 apt-get
就是这种情况。您可以遍历 PATH
或尝试任何其他常用技巧,但幸运的是 Python 在其标准库中已经具有函数 platform.linux_distribution(),例如:
>>> import platform
>>> platform.linux_distribution()
('CentOS Linux', '7.0.1406', 'Core')
您可以查看它的实现方式 here。
使用try/except
。使用此方法,您只需 try
到 运行 apt
。如果这不起作用(即--except
)尝试运行 rpm
。如果这些都不起作用,那么我建议使用 Bereal 建议的默认值——使用默认值 platform.linux_distribution
。
但是,由于很可能至少安装了其中一个,我认为您最好使用 try
方法。此外,您以后可以包含 yum
等包。
try/except
(通用)的示例代码:
try:
x = input("Please input a number.\n")
except ValueError: # Someone put in a character
print 'Not a valid number.\n'
在您的场景中:
import os
package_manager = ""
def check_linux():
try:
os.system("apt")
package_manager = "apt"
except:
os.system("rpm")
package_manager = "rpm"
except: # WARNING! NEVER USE EXCEPT WITHOUT AN ERROR EXCEPT IN THE SIMPLEST OF SCENARIOS. When I find the correct error for this situation I will edit my code.
os.sytem("yum")# ...etc, etc.
package_manager = "yum"
print package_manager
check_linux()
print 'done'
编码愉快!祝你好运!