Вы должны поместить except
блок на том же уровне, что и try
блока, и добавить двоеточие, и использовать правильный исключение:
try:
with open('test.xlsx',newline='') as csvfile:
dialect = csv.Sniffer().sniff(csvfile.read(1024))
csvfile.seek(0)
reader = csv.reader(csvfile, dialect)
for row in reader:
print(row)
except FileNotFoundError:
print("Oops! No such file")
Если вы только хотели поймать open()
вызов и не включают в себя остальную часть with
блока в try..except
обработчика, вам нужно открыть файл отдельно, затем использовать его в with
блоке:
try:
csvfile = open('test.xlsx',newline='')
except FileNotFoundError:
print("Oops! No such file")
else:
with csvfile:
dialect = csv.Sniffer().sniff(csvfile.read(1024))
csvfile.seek(0)
reader = csv.reader(csvfile, dialect)
for row in reader:
print(row)
Обратите внимание, что errno.ENOENT
не является допустимым исключением поймать, это лишь постоянная. Вместо этого я использовал FileNotFoundError
exception; это подкласс OSError
, который вызывается, когда файл, который вы пытались открыть, не найден.
Его работы и дает opps нет такого файла, но продолжают идти вперед и выполнять код. Я добавил разрыв после печати, но получил ошибку – Brian