2016-05-12 17 views
0

Ich habe Probleme beim Drucken in eine TXT-Datei. Die Datei enthält Informationen, die in Bytes gespeichert sind. Egal, was ich versuche, ich kann nur die Ausgabe in der Shell drucken. Hier ist, was ich habe - jede Hilfe ist willkommen.Schreiben in TXT-Datei in Python

def main(): 
    with open("in.txt", "rb") as f: 
     byte = f.read(1) 
     while byte != "": 
      print ord(byte), 
      byte = f.read(1) 


with open('out.txt','w') as f: 
    if __name__ == '__main__': 
     f.write(main()) 
     close.f() 
+1

Ihre 'Haupt'-Funktion hat keinen Rückgabewert –

Antwort

2

Dies ist ein grundlegendes Missverständnis dessen, was verschiedene Funktionen und Methoden tun. Sie schreiben den zurückgegebenen Wert von main() in die Datei und erwarten main 's print() Aufrufe an die Datei zu gehen. So funktioniert es nicht.

def main(): 
    with open("in.txt", "rb") as f, open('out.txt','w') as output: 
     byte = f.read(1) 
     while byte != "": 
      output.write(str(ord(byte))) 
      byte = f.read(1) 

if __name__ == '__main__': 
    main() 

Verwenden file.write() schreiben Strings (oder Bytes, wenn Sie diese Art von Ausgang verwenden, die Sie zur Zeit nicht) in eine Datei. Damit der Code funktioniert, muss main() eine vollständige Zeichenfolge mit dem Inhalt zurückgeben, den Sie schreiben möchten.

+0

Vielen Dank - offensichtlich lerne ich immer noch. Ich schätze deine Erklärung sehr. Dies scheint das Problem gelöst zu haben. – Maggie

1

Sie rufen print ord(byte) aus main(). Dies druckt auf die Konsole.

Sie rufen auch f.write(main()), die zu übernehmen scheint, dass main() ein Wert Rückkehr wird, aber es funktioniert nicht.

Es sieht so aus, als ob Sie die print ord(byte) mit einer Anweisung ersetzen möchten, die die gewünschte Ausgabe an eine Zeichenfolge anfügt, und dann return diese Zeichenfolge von Ihrer main()-Funktion.

+0

Vielen Dank! – Maggie

1

Sie müssen die Zeichenfolge von der Funktion main zurückgeben. Sie drucken es gerade und geben nichts zurück. Dies wird die Zeichenfolge zusammensetzen und zurückgeben.

+0

danke für das Feedback, ich kann alle Hilfe, die ich bekommen kann :) – Maggie