pomocą parametru metody argparse.add_argument
type
można wymagać argument być czytelny plik:Jak uzyskać nazwę pliku z argparse, określając typ = FileType (...) dla tego argumentu
parser.add_argument('--sqlite-file', type=argparse.FileType('r'))
Jak zaletą określenia tego typu, argparse sprawdza, czy plik można odczytać i wyświetla błąd dla użytkownika, jeśli nie.
Czy istnieje sposób na uzyskanie przekazanej nazwy pliku zamiast wystąpienia io.TextIOWrapper
lub io.BufferedReader
?
Ponieważ nazwa pliku pojawia się w reprezentacji ciągów analizatora składni ('sqlite_file': <_io.TextIOWrapper name='data/export.sqlite' ...
lub 'sqlite_file': <_io.BufferedReader name='data/export.sqlite' ...>
), powinno być możliwe.
Jak to zrobić?
http://bugs.python.org/issue13824 patrzy możliwością 'FileTYpe' kontroli bez konieczności otwierania pliku. Rozwiązaniem, które zaproponowałem, było użycie 'os.access' do przetestowania nazwy pliku. – hpaulj