繁体   English   中英

尝试并除外FileNotFoundError

[英]Try and Except FileNotFoundError

我正在设置一个程序以使用指定的文件位置,但是希望能够在文件移动后对其进行更改。 我希望程序读取记事本文件,其中包含指向正确文件位置的链接。 如您所见,try和except无法正常工作,无法弄清原因。

这是我的代码:

def hours():

    #getting username
    global username
    username = getpass.getuser() 

    #defining excel location
    try:
        global filelocation
        filelocation = r'\\flash\Users\Coop\Volunteering\ProgramReferenceX.xlsx'
    except FileNotFoundError:
        global desktop
        desktop = r'C:\Users\\' + username + '\Desktop\Filelocation.txt'
        filelocationtext = open(desktop,'r')
        filelocation = filelocationtext.read()


    global filelog
    filelog=pd.read_excel(filelocation ,read_only=True, sheetname=None, na_filter=False)


    #setting password
    global passwordx

    logbook=pxl.load_workbook(filelocation, data_only=False)
    ashx=logbook['datasheet']

    passwordx = ashx.cell(row=16, column=15).value

我得到的输出是:

FileNotFoundError:[错误2]没有这样的文件或目录:'\\\\ flash \\ Users \\ Coop \\ Volunteering \\ ProgramReferenceX.xlsx'

进行字符串分配时,不会引发FileNotFoundError 所以,

global filelocation
filelocation = r'\\flash\Users\Coop\Volunteering\ProgramReferenceX.xlsx'

永远不会抛出FileNotFoundError 但是,当您打开文件时,就像在这里所做的一样,可能会发生异常:

filelocationtext = open(desktop,'r')

您需要将调用opentry块中,并在引发错误时采取相应措施。

顺便说一句,我认为您运行发布的代码时不会发生您给出的堆栈跟踪。 但是无论哪种方式,您都希望在try块中open调用:而不是except块。

编辑(由于代码已更新):

pd.read_excel还会打开一个文件(而px.load_workbook可能也会打开)。 它也可以抛出FileNotFoundError 您将需要将其放在try块中,如果找不到该文件,则应采取相应的措施。 这可能是生成发布的堆栈跟踪的原因,因为OS找不到的文件名是由filelocation变量给出的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM