os.path.isfile 引发 FileNotFoundError

os.path.isfile raises FileNotFoundError

我只是想做一个小 python 脚本来将一些文件移动到 .xlsx 文件中给定的目标。 为此,我还使用了 os.path.isfile 方法。

from openpyxl import load_workbook
from os.path import basename, dirname, exists, isfile
from os import rename



wb = load_workbook(filename = 'list.xlsx')
tbl1 = wb['Tabelle1']
i = 2
entry = tbl1['B{}'.format(i)].value
while not entry == None:
    entry = tbl1['B{}'.format(i)].value
    if isfile(basename(entry) + ' (2)'):
        print("Datei doppelt vorhanden")
        i += 1
        continue
    if isfile(basename(entry)):
        print("Verschiebe {}".format(basename(entry)))
        rename(basename(entry),'U:\' + dirname(entry)[33:] + '/http_download/' + basename(entry))
        i += 1

当我 运行 脚本不打印任何内容时,我必须使用 Ctrl + C 停止它。然后 IDLE 告诉我 isFile 引发了一个 FileNotFoundError,这看起来有点奇怪。

错误:

Traceback (most recent call last):
  File "C:\Users\user\AppData\Local\Programs\Python\Python35\lib\genericpath.py", line 30, in isfile
    st = os.stat(path)
FileNotFoundError: [WinError 2] Das System kann die angegebene Datei nicht finden: 'interview_jahn.flv'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "Y:\censored\FLV-MP4-Codierung\neucodier_script.py", line 17, in <module>
    if isfile(basename(entry)):
  File "C:\Users\user\AppData\Local\Programs\Python\Python35\lib\genericpath.py", line 30, in isfile
    st = os.stat(path)
KeyboardInterrupt

这可能是一个无限循环,entry永远不会None

while not entry == None:
    entry = tbl1['B{}'.format(i)].value
    if isfile(basename(entry) + ' (2)'):
    ...

中断时,你会得到一个KeyboardInterrupt,它会中断嵌入在isfile()中的(捕获的)异常处理(它在内部使用os.stat,并捕获异常,当该文件不存在)。

错误信息"During handling of the above exception, another exception occurred"没有另外说明。这里的主要问题是你最后的无限循环。