我正在设置一个程序来使用指定的文件位置,但是希望能够在文件移动后对其进行更改。我希望程序读取记事本文件,其中包含指向正确文件位置的链接。如您所见,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'
答案 0 :(得分:2)
进行字符串分配时,不会引发FileNotFoundError
。因此,
global filelocation
filelocation = r'\\flash\Users\Coop\Volunteering\ProgramReferenceX.xlsx'
将绝不会抛出FileNotFoundError
。但是,当您打开文件时,可能会发生异常,就像您在此处所做的那样:
filelocationtext = open(desktop,'r')
您需要将对open
的调用放在try
块中,并在引发错误时采取相应的措施。
顺便说一句,我认为您运行发布的代码时不会发生您给出的堆栈跟踪。但是无论哪种方式,您都希望在open
块中调用try
:而不是except
块。
编辑(由于代码已更新):
pd.read_excel
还会打开一个文件(px.load_workbook
也可能会打开)。它也可以抛出FileNotFoundError
。您可能希望将其放在try
块中,并在找不到文件时采取相应的措施。这可能是生成发布堆栈跟踪的原因,因为filelocation
变量给出了操作系统找不到的文件名。