Chcę napisać funkcję, która akceptuje ścieżkę jako ciąg lub obiekt pliku. Do tej pory mam:Funkcja Pythona akceptująca obiekt lub ścieżkę pliku
def awesome_parse(path_or_file):
if isinstance(path_or_file, basestring):
f = open(path_or_file, 'rb')
else:
f = path_or_file
with f as f:
return do_stuff(f)
gdzie do_stuff
trwa otwarty obiekt pliku.
Czy jest lepszy sposób to zrobić? Czy with f as f:
ma jakieś konsekwencje?
Dzięki!
Oh ... dobry haczyk przy zamykaniu pliku, gdy nie powinien! Zdecydowanie nie chcę, żeby tak się stało. Dzięki! – TorelTwiddler
Czy "wydajność" nie powinna być "yield f"? –
Co dokładnie robi '@ contextlib.contextmanager'? Dlaczego otrzymuję bez niego atrybut "AttributeError: __exit__"? Dzięki! –