2017-09-14 100 views
1

有谁知道你是否可以在python中捕获os错误。我正在研究映射网络驱动器的脚本。 如果最终用户键入不存在的路径的名称,则不会显示错误,这可能会成为问题。 我正在使用python版本3.6的子进程模块,以及pycharm IDE。 如果我映射到不存在的位置,则会出现以下错误“系统错误53发生,网络路径未找到。”无法捕获子进程操作系统错误

最后,我尝试使用OSError,Exception和BaseException捕获错误。我用过的每一个都不会返回任何错误信息。

这是我正在运行的脚本的一个示例。

def StoreInfo(): 
receiving = input("Enter receiving: ") 
try: 
    subprocess.call(r'net use y: \\' + receiving + '\\act\\rto\\transent', shell=True) #timeout=30 
except OSError: 
    #print("An unexpected error:" , sys.exc_info()[0]) 
    print(sending+"'s path does not exit!") 

StoreInfo()

+1

,那是因为没有蟒蛇错误时抛出提高。 “系统错误53发生了,网络路径没有找到” - 这是windows错误,不是python –

+0

如果你使用'subprocess.check_call',它也应该给你进程的返回代码,大多数情况下以0结束并退出其他数字来表示各种错误条件,但@ YaroslavSurzhikov是正确的,没有提出这个python错误,这就是为什么你不能捕捉它。 –

回答

0

的Python»文档Subprocess

try: 
    retcode = call("mycmd" + " myarg", shell=True) 
    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