Seite 1 von 1

.write()??

Verfasst: Fr Jan 02, 2015 1:44 am
von sashpta
Hey wie schaffe ich es die Zeilen 25-30 in einen target.write() zu bekommen als die 6 Zeilen in nur eine?

Code: Alles auswählen

from sys import argv

script, filename = argv

print "We're going to erase %r." % filename
print "If you don't want that, hit CTRL-C (^C)."
print "If you do want that, hit RETURN."

raw_input("?")

print "Opening the file..."
target = open(filename, 'w')

print "Truncating the file. Goodbye!"
target.truncate()

print "Now I'm going to ask you for three lines."

line1 = raw_input("line 1: ")
line2 = raw_input("line 2: ")
line3 = raw_input("line 3: ")

print "I'm going to write these to the file."

target.write(line1)
target.write("\n")
target.write(line2)
target.write("\n")
target.write(line3)
target.write("\n")

print "And finally, we close it."
target.close()
habs selbst schon mal probiert, nur das Problem ist, wenn ich dann später mir die Textdatei in PowerShell mit cat test.txt anzeigen lasse steht dann nur:
line1
line1
line1

und nicht der Text den ich eingegebn habe ^^
Mein Versuch:

Code: Alles auswählen

from sys import argv 

script, filename = argv

print "We're going to erase %r." % filename
print "If you don't want that, hit CTRL-C (^C)."
print "If you do want that, hit RETURN."

raw_input("?")

print "Opening the file..."
file = open(filename, 'w')

print "Truncating the file. Goodbye!"
file.truncate()

print "Now I'm going to ask you for three lines."

line1 = raw_input("line 1: ")
line2 = raw_input("line 2: ")
line3 = raw_input("line 3: ")

print "I'm going to write these to the file."


file.write('line1\n' * 3)

print "And finally, we close it."
file.close()
hoffe ihr versteht mein Problem und könnt mir helfen :)

Danke schonmal im Vorraus :)

LG

Re: .write()??

Verfasst: Fr Jan 02, 2015 2:34 am
von nufan
Tag :)
sashpta hat geschrieben:habs selbst schon mal probiert, nur das Problem ist, wenn ich dann später mir die Textdatei in PowerShell mit cat test.txt anzeigen lasse steht dann nur:
line1
line1
line1

und nicht der Text den ich eingegebn habe ^^
Mein Versuch:

Code: Alles auswählen

file.write('line1\n' * 3)
Klar, das ist genau das was du in deinem Programm sagst. Du nimmst den Text "line1\n", multiplizierst ihn mit 3 ("line1\nline1\nline1\n") und gibst ihn aus. Deine Variablen verwendest du bei dieser Ausgabe überhaupt nicht, du arbeitest nur mit dem konstanten String "line1\n".

Was du wohl wirklich machen willst, ist die Variablen mit einem Newline dazwischen zu verketten. In Python kannst du das recht intuitiv mit dem + Operator erreichen:

Code: Alles auswählen

line1 = 'https://'
line2 = 'proggen'
line3 = '.org'

print line1 + '\n' + line2 + '\n' + line3 + '\n'
Weiters würde ich dir empfehlen anstatt durchnummerierter Variablen (line1, line2, line3, ...) ein Array zu verwenden.

Re: .write()??

Verfasst: Fr Jan 02, 2015 5:44 pm
von sashpta
Erstmal Danke

Aber wenn ich es mit diesem ".write" machen will und das man in PowerShell dann eingibt was man als Text haben will wie geht das wenn mans in nur einer Zeile haben will?

Habe erst angefangen Python zu lernen und weiß nicht was Arrays sind^^

Das mit dem ".write" ist halt eine Aufgabe in dem Buch wo ich das lerne ^^ also laut der Aufgabe soll ich mit der Hilfe von strings, escapes und formats line 1, line2 und line3 mit nur einem target.write() command anzeigen anstatt mit 6

Re: .write()??

Verfasst: Fr Jan 02, 2015 5:55 pm
von nufan
sashpta hat geschrieben:wie geht das wenn mans in nur einer Zeile haben will?
Dann lässt du einfach die Zeilenumbrüche ('\n') bei der Verkettung zwischen den Variablen weg.
sashpta hat geschrieben:Habe erst angefangen Python zu lernen und weiß nicht was Arrays sind^^
Dachte ich mir schon. Ich persönlich finde es etwas seltsam Dateioperationen vor Arrays zu erklären, aber lassen wir das mal so stehen.

Re: .write()??

Verfasst: Fr Jan 02, 2015 6:31 pm
von sashpta
Danke

Aber wenn ich das /n weglasse dann habe ich doch keine 3 Zeilen oder?
Werds nachher mal testen

Re: .write()??

Verfasst: Fr Jan 02, 2015 6:49 pm
von nufan
sashpta hat geschrieben:Aber wenn ich das /n weglasse dann habe ich doch keine 3 Zeilen oder?
Dachte du willst alles in einer Zeile haben? Wie genau willst du denn deine Ausgabe jetzt haben?

Re: .write()??

Verfasst: Fr Jan 02, 2015 7:13 pm
von sashpta
Es soll in PowerShell genauso angezeigt werden wie im oberen Code. Nur das ich nicht 6mal dieses target.write im Code habe sonder nur einmal

Re: .write()??

Verfasst: Fr Jan 02, 2015 7:22 pm
von nufan
Dann stimmt der Code in meinem ersten Beitrag doch. Du musst nur statt print eben write aufrufen.

Re: .write()??

Verfasst: Fr Jan 02, 2015 7:54 pm
von sashpta
Ah ja stimmt, mein Fehler sorry, dachte das mit dem

line1 = "https"
usw müsse dazu gehören ^^

Klappt alles so wies soll mit deinem ersten Code :)

Vielen Dank