os.path.isfile引发FileNotFoundError

时间:2017-04-06 12:25:16

标签: python exception os.path

我只是想尝试做一些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

1 个答案:

答案 0 :(得分:0)

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

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

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

错误消息&#34;在处理上述异常期间,发生了另一个异常&#34;没有其他说法。这里的主要问题是你的无限循环。