.write()??

Objektorientierte Skriptsprache: (python.org)
Antworten
sashpta
Beiträge: 104
Registriert: Fr Dez 12, 2014 2:55 pm

.write()??

Beitrag von sashpta » Fr Jan 02, 2015 1:44 am

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

nufan
Wiki-Moderator
Beiträge: 2557
Registriert: Sa Jul 05, 2008 3:21 pm

Re: .write()??

Beitrag von nufan » Fr Jan 02, 2015 2:34 am

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.

sashpta
Beiträge: 104
Registriert: Fr Dez 12, 2014 2:55 pm

Re: .write()??

Beitrag von sashpta » Fr Jan 02, 2015 5:44 pm

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

nufan
Wiki-Moderator
Beiträge: 2557
Registriert: Sa Jul 05, 2008 3:21 pm

Re: .write()??

Beitrag von nufan » Fr Jan 02, 2015 5:55 pm

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.

sashpta
Beiträge: 104
Registriert: Fr Dez 12, 2014 2:55 pm

Re: .write()??

Beitrag von sashpta » Fr Jan 02, 2015 6:31 pm

Danke

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

nufan
Wiki-Moderator
Beiträge: 2557
Registriert: Sa Jul 05, 2008 3:21 pm

Re: .write()??

Beitrag von nufan » Fr Jan 02, 2015 6:49 pm

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?

sashpta
Beiträge: 104
Registriert: Fr Dez 12, 2014 2:55 pm

Re: .write()??

Beitrag von sashpta » Fr Jan 02, 2015 7:13 pm

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

nufan
Wiki-Moderator
Beiträge: 2557
Registriert: Sa Jul 05, 2008 3:21 pm

Re: .write()??

Beitrag von nufan » Fr Jan 02, 2015 7:22 pm

Dann stimmt der Code in meinem ersten Beitrag doch. Du musst nur statt print eben write aufrufen.

sashpta
Beiträge: 104
Registriert: Fr Dez 12, 2014 2:55 pm

Re: .write()??

Beitrag von sashpta » Fr Jan 02, 2015 7:54 pm

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

Antworten