所以我想做的是将.exe bynary写入.txt文件,然后将.txt文件写入.exe文件,我试过这个:
with open("old_File.exe", "rb") as f:
text_file = open("File.txt", "w")
byte = f.read(1)
while byte != "":
text_file.write(str(byte))
byte = f.read(1)
text_file.close()
with open("New_File.exe", "wb") as f:
text_file = open("File.txt", "r")
byte = text_file.read(12)
while byte != "":
print byte
f.write(byte)
byte = text_file.read(12)
text_file.close()
f.close()
但是,如果我运行New_File.exe
窗口,请告诉我它不是一个有效的应用程序。
怎么了?
答案 0 :(得分:2)
答案是:
第二次读取* .txt文件时,您没有在读取二进制模式下打开它,只是在读取时,实际上是读取文本模式。 对于旧版本的Python,它依赖于平台,即仅在Windows上存在问题。 在Python 3中,这将使您在任何平台上出现问题。
建议:如果你不需要,不要以如此小的块读取文件,你将扼杀可怜的Windows。用至少1024来做。它通常用4096字节完成。如果文件很小,只需要执行newfile.write(oldfile.read())今天的PC有足够的内存可以放入几个MB而没有任何问题。 而且,不需要str(byte),因为它已经是一个字符串。
答案 1 :(得分:1)
要复制两个文件并保留元数据,请使用shutil.copy2。这是一种更安全的复制文件的方法。
答案 2 :(得分:0)
exe = open("exe.exe", "rb")
txt = open("txt.txt", "wb")
data = exe.read(100000)
while data != "":
txt.write(data)
data = exe.read(100000)
exe.close()
txt.close()
你实际上必须在文本文件上写二进制文件而不是在文件本身上将其写为字符串。
#create new file
N_exe = open("N-exe.exe", "w+")
N_exe.close()
N_exe = open("N-exe.exe", "wb")
Txt = open("txt.txt", "rb")
data = Txt.read(100000)
while data != "":
N_exe.write(data)
data = Txt.read(100000)
N_exe.close()
Txt.close()