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.
Aydan
User
Beiträge: 13
Registriert: Mittwoch 24. Mai 2006, 13:08

linefeed erzwingen

Beitragvon Aydan » Mittwoch 24. Mai 2006, 13:33

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/

Beitragvon Martin89 » Mittwoch 24. Mai 2006, 13:55

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

Beitragvon pr0stAta » Mittwoch 24. Mai 2006, 14:11

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

Beitragvon Aydan » Mittwoch 24. Mai 2006, 15:13

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

Beitragvon helmut » Mittwoch 24. Mai 2006, 16:20

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

Beitragvon Aydan » Mittwoch 24. Mai 2006, 16:26

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

Beitragvon Leonidas » Mittwoch 24. Mai 2006, 16:46

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

Beitragvon helmut » Mittwoch 24. Mai 2006, 16:47

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

Beitragvon Aydan » Montag 29. Mai 2006, 08:04

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
Benutzeravatar
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

Beitragvon Joghurt » Montag 29. Mai 2006, 09:05

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

Beitragvon Aydan » Montag 29. Mai 2006, 12:47

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.

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder