EDIT 1is_tarfile() zwraca True dla pustego pliku
Hmm, ja akceptuje odpowiedź, że smoła względami pusty plik ... ale w moim systemie:
$ touch emptytar
$ tar -tf emptytar
tar: This does not look like a tar archive
tar: Exiting with failure status due to previous errors
może mam wersja niekanoniczna?
$ tar --version
tar (GNU tar) 1.22
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by John Gilmore and Jay Fenlason.
Witam wszystkich,
jestem testowania pewnej logiki do obsługi użytkownika przesłaniem pliku TAR. Kiedy karmię pusty plik do tarfile.is_tarfile()
zwraca True
, który jest nie to, czego oczekuję:
$ touch tartest
$ cat tartest
$ python -c "import tarfile; print tarfile.is_tarfile('tartest')"
True
Jeśli dodać jakiś tekst do pliku, zwraca False
, który Oczekuję:
$ echo "not a tar" > tartest
$ python -c "import tarfile; print tarfile.is_tarfile('tartest')"
False
mogę dodać czek na początku w celu sprawdzenia pliku o zerowej długości, ale w oparciu o documentation dla tarfile.is_tarfile(name)
Myślę, że to unecessary:
Return True, jeśli name jest archiwum tar plik, który moduł tarfile może odczytać .
Poszedłem tak daleko, aby sprawdzić źródło, tarfile.py, i widzę, że sprawdza on bloki nagłówków, ale nie w pełni rozumiem, w jaki sposób ocenia te bloki.
Czy błędnie interpretuję dokumentację, a tym samym ustalam nieuczciwe oczekiwania?
Dziękuję
Zachary
"tar", którego próbowałem, to GNU 1.15.1 (przeniesiony przez Apple na MacOSX/Darwin); Nie jestem w stanie wyjaśnić waszej obserwacji, że 1.22 najwyraźniej zmieniło się w sposób niekompatybilny wstecz! –
Potrafię potwierdzić zachowanie błędu GNU tar 1.26 na pustym pliku: zgłasza błąd, podczas gdy tarfile.is_tarfile zwraca True – m13r