Spotkałem dzisiaj coś bardzo dziwnego.
Oto co się stało: Napisałem krótki skrypt Pythona (aby sprawdzić łączność z hostem) podczas pracy z PyDev. Przeniosłem go z mojego laptopa z systemem Windows 7 na stację roboczą Ubuntu za pomocą pamięci USB, a plik wyglądałby jak banda bełkotu. Próbowałem ponownie zapisać plik i zmienić jego nazwę, ale to nie pomogło. Próbowałem wyświetlić plik na innej stacji roboczej Ubuntu i to samo się stało. Nie wpłynęło to na żadne inne moje pliki Pythona. Wątpię, aby problem tkwił w moim napędzie kciukowym, ponieważ mogę go doskonale odczytać na laptopie.
Ostatecznie postanowiłem wysłać plik pocztą elektroniczną do siebie, co rozwiązało problem. Czy ktoś wie, co mogło się stać?
Odpowiedzi:
Na podstawie podanych przez ciebie informacji podejrzewam, że może to wynikać z różnicy w końcówkach linii używanych w * nix i Windows. Sprawdzić ta strona na Wikipedii.
Możesz potwierdzić, że koniec linii jest przyczyną problemu, sprawdzając go za pomocą narzędzia, które może zrzucić znaki ascii. W Ubuntu możesz użyć
hexdump
A oto przykład ilustrujący różnicę w końcach linii między dwoma systemami. Plik wejściowy to prosty plik tekstowy o nazwie sample.txt ze słowami line1 i line2 w osobnych wierszach
Wyjście sample.txt utworzone w systemie Linux
Dane wyjściowe sample.txt utwórz w systemie Windows
Aby przekonwertować między rodzajami zakończeń linii spróbuj dos2unix lub fromtodos .
źródło