1

可能重复:
写入和读取文件时的奇怪行为

当我尝试写入文件然后读取它时,我得到了意想不到的结果。

我的代码是:

f=open("z.txt","w+")
f.write("Hello")
content=f.read()
print content
f.close()

输出的文件是:

Hellolף  ן (I11 (S'QUEUE' p1 (S'exec' p2 S'runco​​de' 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+t\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ר ְ ז׀l Ak !
€qg ¸Ck PCk $ ְBkאBkנBk 8Ck
xCk XBkxBk °Ck׀CkנCkDk
@' (Ck~Ck kצ Ck Ck
ְpg DkDֽ~F ! €qg + ~Ck
(Dk @k @k xDk ר?k @f HDkhDkpDk ~Dk
נDkEk0E ְ” kצ
ְpg ! ~F ,
״Dk

@k @k                      ר?k

我究竟做错了什么?

4

2 回答 2

2

我相信这是一个 Windows 问题,与文件系统块大小有关。如果你.flush().write()你之前.read(),它会工作得很好。我可以在Win7上重现它。

(我认为正在发生的事情是 Windows 以 4KB 的块为单位分配您的文件,因此写入"Hello"会使您达到下一个块大小。如果您随后.read()从块的其余部分得到随机的乱码,因为 Python 没有机会处理它。如果你.flush().read()ing 之前,Python 会正确地写出文件,然后你只会得到一个空字符串。)

于 2012-11-22T16:00:16.333 回答
0
f=open("z.txt","w+")
f.write("Hello")
f.seek(0)
content=f.read()
print content
f.close()

我失踪了
f.seek(0)

于 2012-11-22T15:50:27.203 回答