2017-05-03 2 views
-1

Der Code wird verwendet, um die Daten von hexadezimal zu konvertieren, um binäre funktioniert perfekt, aber, aber, wenn ich die Ausgabe in die Datei umleiten, ist die Ausgabedatei leerPython-Datei umleiten geben leere Datei

hier der Code

for file in glob.glob("g1.txt.out"): 
print file 
myfile = open(file, "r") 
outfile= open(file + ".binary",'a+') 

for line in myfile: 

    data_binary="{0:16b}".format(int(line, 16)) 
    print >> outfile,data_binary # redirect code. 
+1

warum auf einem Nicht-Muster Looping? –

Antwort

0

Sie müssen Ihre Dateien schließen, da io gepuffert ist. Denken Sie immer daran, alle geöffneten Dateien zu schließen, um Daten zu speichern.

for file in glob.glob("g1.txt.out"): 
    print file 
    myfile = open(file, "r") 
    outfile= open(file + ".binary",'a+') 

    for line in myfile: 

     data_binary="{0:16b}".format(int(line, 16)) 
     print >> outfile,data_binary # redirect code. 
    myfile.close() 
    outfile.close() 

Oder sogar with Aussage besser lernen, die es automatisch tun wird.

with open(filename) as f: 
    data = f.read() 
    do something with data 
1

Statt die Ausgabe von Druck von Umleitung können Sie direkt in die Ausgabedatei schreiben:

with open("g1.txt.out", "r") as my_file, open("g1.txt.out.binary",'a+') as out_file: 
    for line in my_file: 
     data_binary = "{0:16b}\n".format(int(line, 16)) 
     out_file.write(data_binary) 
+1

müssen Sie die Daten irgendwie trennen, sonst bestehen Ihre Binärdaten aus 1 Zeile von 0 und 1s. 'print' fügt einen Zeilenvorschub hinzu:' data_binary = "{0: 16b} \ n" .format (int (line, 16)) 'sollte genügen. –

+0

@ Jean-FrançoisFabre hat die Antwort erneut aktualisiert. Vielen Dank. –