当我尝试写入文件然后阅读时,我得到了意想不到的结果。
我的代码是:
f=open("z.txt","w+")
f.write("Hello")
content=f.read()
print content
f.close()
输出的文件是:
Hellolףן(I11(S'QUEUE'p1(S'exec'p2 S'runcode'p3) (cidlelib.rpc unpickle_code p4 (S'c \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X03 \ X00 \ X00 \ X00 @ \ X00 \ X00 \ x00s6 \ X00 \ X00 \ x00e \ X00 \ x00d \ X00 \ x00d \ X01 \ X00 \ X83 \ X02 \ x00Z \ X01 \ x00e \ X01 \ x00j \ X02 \ x00d \ X02 \ X00 \ X83 \ X01 \ X00 \ x01e \ X01 \ x00j \ X03 \ X00 \ X83 \ X00 \ x00Z \ X04 \ x00e \ X01 \ x00j \ X05 \ X00 \ X83 \ X00 \ X00 \ x01d \ X03 \ x00S(\ X04 \ X00 \ X00 \ x00s \ X05 \ X00 \ X00 \ x00z.txts \ X02 \ X00 \ X00 \ x00w +吨\ X05 \ X00 \ X00 \ x00HelloN(\ X06 \ X00 \ X00 \ x00t \ X04 \ X00 \ X00 \ x00opent \ X01 \ X00 \ X00 \ x00ft \ X05 \ X00 \ X00 \ x00writet \ X04 \ X00 \ X00 \ x00readt \ X07 \ X00 \ X00 \ x00contentt \ X05 \ X00 \ X00 \ x00close(\ X00 \ X00 \ X00 \ X00(\ X00 \ X00 \ X00 \ X00(\ X00 \ X00 \ X00 \ x00s \ X17 \ X00 \ X00 \ x00C :/用户/ X /桌面/ ZT \ X08 \ X00 \ X00 \ X00 \ X01 \ X00 \ X00 \ x00s \ X06 \ X00 \ X00 \ X00 \ X0F \ X01 \ r \ X01 \ X0C \ X01' tRp5 tp6(dp7 ttp8 tp9。'2רְז|lAk!
€qg¸CkPck$ְBkאBkנBk 8Ck
xCk XBkxBk°Ck | CkנCkDk
@'(Ck~Ck kצCk Ck
ְpg DkDֽ〜F! €qg +〜Ky (DK @k @k xDkר?k @fHDkhDkpDk~Dk
Dk DkEk0EkPEkְ“kצ
ְpg! ~F,
“Dk@k @k ר?k
我做错了什么?
答案 0 :(得分:2)
我认为这是一个Windows问题,与文件系统块大小有关。如果您在.flush()
之前.write()
.read()
,它将正常运行。我可以在Win7上重现它。
(我认为正在发生的事情是Windows以4KB的块分配您的文件,因此写"Hello"
会使您陷入下一个块大小。如果您然后.read()
,您会得到随机的乱码其余部分,因为Python还没有机会处理它。如果你.flush()
之前.read()
,Python正确地写出文件然后你得到一个空字符串。)
答案 1 :(得分:0)
f=open("z.txt","w+")
f.write("Hello")
f.seek(0)
content=f.read()
print content
f.close()
我失踪了
f.seek(0)