Seite 1 von 1

linefeed erzwingen

Verfasst: Mittwoch 24. Mai 2006, 13:33
von Aydan
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

Verfasst: Mittwoch 24. Mai 2006, 13:55
von Martin89
wie waere es mit

Code: Alles auswählen

out= open('/tmp/asdf', 'w')
out.write('\n')
Martin

Verfasst: Mittwoch 24. Mai 2006, 14:11
von pr0stAta

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.

Verfasst: Mittwoch 24. Mai 2006, 15:13
von Aydan
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

Verfasst: Mittwoch 24. Mai 2006, 16:20
von helmut
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

Verfasst: Mittwoch 24. Mai 2006, 16:26
von Aydan
dem ist leider nicht so,
ich hab das file im hex editor angeschaut, und da steht immer ein CRLF.

Verfasst: Mittwoch 24. Mai 2006, 16:46
von Leonidas
Musst die Datei vielleicht noch im binary-mode öffnen, also 'wb' statt 'w'.

Verfasst: Mittwoch 24. Mai 2006, 16:47
von helmut
Sorry, habe die falsche Version in die Antwort kopiert: probier' es mal mit open(datei,'wb') und open(datei,'rb')
Gruss, Helmut

Verfasst: Montag 29. Mai 2006, 08:04
von Aydan
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

Verfasst: Montag 29. Mai 2006, 09:05
von Joghurt
Wie wäre es dann mit "ab" als Modus?

Verfasst: Montag 29. Mai 2006, 12:47
von Aydan
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.