2015-04-13 2 views
-2
import csv 
try: 
    with open('test.xlsx',newline='') as csvfile: 
     except errno.ENOENT 
      print("opps !! no such file") 
     dialect = csv.Sniffer().sniff(csvfile.read(1024)) 
     csvfile.seek(0) 
     reader = csv.reader(csvfile, dialect) 
     for row in reader: 
      print(row) 

Я получаю ошибкуPython файл не найден handeling

File "<ipython-input-59-b3b9b540a1d8>", line 4 
    except errno.ENOENT 
     ^
SyntaxError: invalid syntax 
+0

Его работы и дает opps нет такого файла, но продолжают идти вперед и выполнять код. Я добавил разрыв после печати, но получил ошибку – Brian

ответ

1

Вы должны поместить 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, который вызывается, когда файл, который вы пытались открыть, не найден.

Смежные вопросы