2013-08-06 8 views
11
import ConfigParser 
config = ConfigParser.ConfigParser() 
config.read('test.ini') 

W ten sposób odczytujemy plik konfiguracyjny w języku Python. Ale co, jeśli "test.ini" nie istnieje? Dlaczego ta metoda nie rzuca wyjątku?python Plik do odczytu pliku ConfigParser nie istnieje

Jak mogę sprawić, że wyrzuci wyjątek, jeśli plik nie istnieje?

Odpowiedz

10

Z docs:

Jeśli żadna z wymienionych plików istnieje instancja ConfigParser będzie zawierać pusty zbiór danych.

Jeśli chcesz podnieść błąd w przypadku, gdy którykolwiek z plików nie znajduje to można spróbować:

files = ['test1.ini', 'test2.ini'] 
dataset = config.read(files) 
if len(dataset) != len(files): 
    raise ValueError, "Failed to open/find all files" 
+0

Dlaczego 'config.read (' test.ini ')' nie powinno to być 'config.read (pliki)'? – user3817250

12

Można też bezpośrednio otworzyć go w postaci pliku.

try: 
    with open('test.ini') as f: 
     config.readfp(f) 
except IOError: 
    raise MyError() 

EDIT: Dodano brakujące '

+2

To działało. Przy okazji: 'readfp()' jest teraz przestarzały (przynajmniej w Pythonie 3). Nazywa się teraz 'read_file()'. –

Powiązane problemy