Plik tekstowy Windows wydaje się uszkodzony w Ubuntu po przeniesieniu USB

0

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ć?

Danny Chia
źródło
2
"Szwargot"? Pomogłoby to dołączyć próbkę tego, co widzisz.
Wyzard
Opublikuję zrzut ekranu, kiedy jutro rano będę pracować.
Danny Chia
Dziwne, zrobiłem kilka zmian w pliku Pythona i nie wydaje się już bełkotać. Być może sektor na dysku przenośnym został uszkodzony w taki sposób, że był nieczytelny tylko w Ubuntu. Kto wie?
Danny Chia

Odpowiedzi:

1

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

hexdump <filename> 

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

$ cat sample.txt
line1
line2

Wyjście sample.txt utworzone w systemie Linux

sample.txt:
00000000  6c69 6e65 310a 6c69 6e65 320a           line1.line2.

Dane wyjściowe sample.txt utwórz w systemie Windows

sample.txt:
00000000  6c69 6e65 310d 0a6c 696e 6532 0d0a      line1..line2..

Aby przekonwertować między rodzajami zakończeń linii spróbuj dos2unix lub fromtodos .

dinesh
źródło