2016-12-10 4 views
0

Beim Lesen und Drucken durch meine Dateien, Druck durch meine cousole gibt mir das richtige Ergebnis, sondern auf die outfile Schreiben nichtLesen und Drucken mehrerer Dateien in eine Ausgabedatei

with infile as f : 
    lines = f.readlines() 

new_line = " " 

for line in lines: 
    new_line = ''.join(line).replace('*',letter.upper()) 
    new_line = new_line.replace(':',letter.lower()) 
    print(new_line) 

Dies druckt alle Buchstaben aus dass ich eingegeben habe

with infile as f : 
    lines = f.readlines() 

new_line = " " 

for line in lines: 
    new_line = ''.join(line).replace('*',letter.upper()) 
    new_line = new_line.replace(':',letter.lower()) 
    outfile.write(new_line) 

Es gibt mir nur den letzten Buchstaben des eingegebenen Wortes.

folder = r"C:\Users\sarah\Documents\a CPS 111\Bonus PA\stars\stars" 
# os.listdir(folder) returns a list of files in folder 
file_list = os.listdir(folder) 
letter_art = {} 

word = str(input("Please input a letter: ")) 
word = word.upper() 

for fname in file_list: 

    letter_extension_list = fname.split(".") 

for letter in word: 
    key = letter 
    value = letter_extension_list[1] 
    value = "%s."%(key) + value 
    letter_art[key] = value 

    fname = "\\".join([folder, value]) 

    infile = open(fname, "r") 
    outfile = open("word_art.txt", "w") 


    with infile as f : 
     lines = f.readlines() 

    new_line = " " 

    for line in lines: 
     new_line = ''.join(line).replace('*',letter.upper()) 
     new_line = new_line.replace(':',letter.lower()) 

     print(new_line) 
     outfile.write(new_line) 






infile.close() 
outfile.close() 

Dies ist der Code, mit dem ich gerade arbeite. Ich bin in Symbolen aus einer txt-Datei zu nehmen und sie auf den coornading Brief zu ändern, je nachdem, was der Benutzer inputed

+0

Öffnen und schließen Sie die Ausgabedatei bei jeder Iteration? – TigerhawkT3

+0

Warum machst du '' '.join (line) ', übrigens? Von dem, was ich sehen kann, sollte es schon eine Schnur sein. – TigerhawkT3

+0

Wie ich vermutete, öffnen Sie die Datei tatsächlich bei jeder Iteration neu. Sie haben 'für Buchstaben in Wort:' und in dieser Schleife gibt es 'outfile = open (" word_art.txt "," w ")', öffnet und löscht die Datei jedes Mal, wenn sie ausgeführt wird. – TigerhawkT3

Antwort

0

Öffnen Sie die Ausgabedatei vor der Schleife statt in ihm:

outfile = open("word_art.txt", "w") 
for letter in word: 
+0

Okay, das größte Problem behoben! Gibt es eine Möglichkeit, die beiden Dateien vertikal nebeneinander zu drucken (was versuche ich letztendlich zu erreichen)? Weil die letzte Zeile des ersten Buchstabens und die erste Zeile des zweiten Buchstabens zusammen @ TigerhawkT3 gedruckt werden. –

+0

Ich habe outfile.write ("\ n") außerhalb der Zeile für Zeile in Zeilen hinzugefügt und es das erste Problem behoben. Aber gibt es eine Möglichkeit, die Buchstaben horizontal und vertikal zu bekommen? @ TigerhawkT3. –

+0

Ich habe meinen Code und meine Frage aktualisiert! Vielen Dank für Ihre Hilfe bei meinem ersten Problem! @ TigerhawkT3. –

0
with open("test.txt",'r') as f : 
lines = f.readlines() 

with open('out.txt','w') as outfile: 
    for line in lines: 
     new_line = line.replace('*',letter.upper()) 
     new_line = new_line.replace(':',letter.lower()) 
     outfile.write(new_line) 

Das funktionierte für mich.

EDIT: TigerhawkT3 ist korrekt. Ich habe Ihren vollständigen Code ausgecheckt und Sie haben die Datei immer wieder innerhalb der Schleife geöffnet und jedes Mal die vorherigen Änderungen verworfen.

Verwandte Themen