linefeed erzwingen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Aydan
User
Beiträge: 13
Registriert: Mittwoch 24. Mai 2006, 13:08

Hi,

wie kann ich beim schreiben in eine mit open() geöffnete Datei einen linefeed (nur \x0a) erzwingen,der nicht in CRLF(\x0a\x0d) umgewandelt wird.

Ich benutze python 2.4 auf Windows

Aydan
Martin89
User
Beiträge: 22
Registriert: Freitag 12. Mai 2006, 21:03
Wohnort: /home/

wie waere es mit

Code: Alles auswählen

out= open('/tmp/asdf', 'w')
out.write('\n')
Martin
pr0stAta
User
Beiträge: 271
Registriert: Freitag 17. September 2004, 11:49
Wohnort: Bremen

Code: Alles auswählen

out= open('/tmp/asdf', 'w')
out.write('\n')
Geht nicht! \n erzeugt einen normalen Zeilenumbruch a la CRLF

Einfach

Code: Alles auswählen

out= open('/tmp/asdf', 'w')
out.write('\r')
Damit sollte es gehen.
Aydan
User
Beiträge: 13
Registriert: Mittwoch 24. Mai 2006, 13:08

Danke für die Antworten,
leider erzeugt '\r' ASCII 13 und nicht ASCII 10.
Das versteht Excel leider nicht.
Ich möchte einen linefeed in einer Zelle erreichen.

CU
Aydan
helmut
User
Beiträge: 57
Registriert: Mittwoch 2. November 2005, 07:45
Wohnort: Dormagen

Hallo,
das '\n' wird mit dem ascii-code 10 in eine Datei geschrieben. Wird eine Applikation mit der Datei gefüttert, siehst Du die Interpretation von chr(10), die in die Applikation programmiert wurde. Gibst Du die Ordnungszahlen der Datei statt des Textes aus, kannst Du erkennen, das nur die '10' (ohne '13' ) gespeichert wurde.

Schreiben in eine Datei:

Code: Alles auswählen

cFileName = r'ad_hoc.txt'
txt = "123456789" + '\n' +"987654321"

cFile_w = open(cFileName, 'w')
cFile_w.write(txt)
cFile_w.flush()    
cFile_w.close()
Lesen der Datei:

Code: Alles auswählen

cFile_r = open(cFileName,'r')
data = cFile_r.read()
for ch in data:
    print ord(ch),
cFile_r.close()   

#Ausgabe:
#Lesen der Datei ad_hoc.txt
#49 50 51 52 53 54 55 56 57 10 57 56 55 54 53 52 51 50 49 
Gruss, Helmut
Aydan
User
Beiträge: 13
Registriert: Mittwoch 24. Mai 2006, 13:08

dem ist leider nicht so,
ich hab das file im hex editor angeschaut, und da steht immer ein CRLF.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Musst die Datei vielleicht noch im binary-mode öffnen, also 'wb' statt 'w'.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
helmut
User
Beiträge: 57
Registriert: Mittwoch 2. November 2005, 07:45
Wohnort: Dormagen

Sorry, habe die falsche Version in die Antwort kopiert: probier' es mal mit open(datei,'wb') und open(datei,'rb')
Gruss, Helmut
Aydan
User
Beiträge: 13
Registriert: Mittwoch 24. Mai 2006, 13:08

Hi nochmal,

danke für eure Antworten.
Ich wollte die Datei allerdings sicherheitshalber mit '+a' öffnen, dass ich nicht versehentlich was überschreibe, aber das funktioniert ja nicht im binary modus.

so long
Aydan
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

Wie wäre es dann mit "ab" als Modus?
Aydan
User
Beiträge: 13
Registriert: Mittwoch 24. Mai 2006, 13:08

Aydan hat geschrieben: Ich wollte die Datei allerdings sicherheitshalber mit '+a' öffnen
'+ab' kann ja net funktionieren weil's 'ab+' heissen muss. jetzt tut's was es soll.
Antworten