Hallo zusammen,
wie kann ich den Unix-Befehl: dos2unix -ascii in Python durchführen? Ich möchte Dateien, die in einer Windows-Umgebung erstellt wurden, in Unix verwenden.
Stephan
dos2unix
Hi. Ganz einfach binär öffnen und die Zeilenumsprünge editieren:
Code: Alles auswählen
f=file("text.txt","rb")
i=f.read()
f.close()
i=i.replace("\r\n","\n")
f=file("text.txt","wb")
f.write(i)
f.close()
-
- Python-Forum Veteran
- Beiträge: 2010
- Registriert: Freitag 11. Oktober 2002, 18:00
- Wohnort: Salzburg
- Kontaktdaten:
Hi auch,
oder öffne die Dateien mit "ru"
Gruß
Dookie
oder öffne die Dateien mit "ru"
Code: Alles auswählen
infile = file("dos.txt", "ru")
outfile = file("unix.txt", "w")
for line in infile:
outfile.write(line)
Dookie
Hi. das wird nur bedingt klappen. Ich weiß nicht, was Linux im universal Mode macht, denn da könnte Python davon ausgehen, dass bereits \n vorherscht. Und unter win musst du beachten, dass du die Datei binär zum schreiben öffnest, sonst funkt dir Windows beim speichern wieder dazwischen und du hast dieselbe Datei wie vorher (unter lin kein Problem, da es da ja nur binär geht)...
-
- Python-Forum Veteran
- Beiträge: 2010
- Registriert: Freitag 11. Oktober 2002, 18:00
- Wohnort: Salzburg
- Kontaktdaten:
er will ja die Windowsdateien in Linux unter Python verwenden, dafür is ja das "u" gedacht oder nicht? Wobei um die Inhalte zu verwenden, wird man eh Zeilenweise einlesen und dann mit strip() die Dateiendungen wegmachen bevor man den Inhalt verwendet.
Gruß
Dookie
Gruß
Dookie
Hi. Hast Recht, habs gerade nachgelesen. Nur für die generelle Nutzung (sowie win als auch lin wäre es trotzdem besser, wb zu machen
)
Was anderes: das mit dem strip um die Newlines wegzumachen finde ich nicht gut, denn es kann ganz schnell zu bösen Seiteneffekten kommen:
Selbst wenn du rstrip benutzt, kann am Ende ja noch mehr als ein Newline stehen, z.B. ein Leerzeichen oder wie oben auch ein Tab... Das ist dann alles weg, ohne es je gesehen zu haben
Ein replace("\n","") finde ich wesentlich besser 

Was anderes: das mit dem strip um die Newlines wegzumachen finde ich nicht gut, denn es kann ganz schnell zu bösen Seiteneffekten kommen:
Code: Alles auswählen
>>> "\thaha\n".strip()
'haha'


-
- Python-Forum Veteran
- Beiträge: 2010
- Registriert: Freitag 11. Oktober 2002, 18:00
- Wohnort: Salzburg
- Kontaktdaten:
HiHo,
naja, hängt vom Verwendungszweck ab, whitespaces am Begin und am Ende von Zeilen sind meisst nur für den Menschlichen Leser da, ansonst gibts ja genug möglichkeiten um Zeilen für die Weiterverarbeitung aufzubereiten unter Python.
Gruß
Dookie
naja, hängt vom Verwendungszweck ab, whitespaces am Begin und am Ende von Zeilen sind meisst nur für den Menschlichen Leser da, ansonst gibts ja genug möglichkeiten um Zeilen für die Weiterverarbeitung aufzubereiten unter Python.
Gruß
Dookie