Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中意外的文件行为_Python_File_Output - Fatal编程技术网

python中意外的文件行为

python中意外的文件行为,python,file,output,Python,File,Output,可能重复: @k @k ר?k 当我试图写入一个文件,然后读取它时,我得到了一个意想不到的结果 @k @k ר?k 我的代码是: f=open("z.txt","w+") f.write("Hello") content=f.read() print content f.close() @k @k ר?k 输出的文件是: @k @k

可能重复:

@k @k                      ר?k
当我试图写入一个文件,然后读取它时,我得到了一个意想不到的结果

@k @k                      ר?k
我的代码是:

f=open("z.txt","w+")
f.write("Hello")
content=f.read()
print content
f.close()
@k @k                      ר?k
输出的文件是:

@k @k                      ר?k
海洛尔ף  ן(I11)(S'QUEUE'p1(S'exec'p2)S'runcode'p3 (cidlelib.rpc取消勾选代码p4) 中国内地政府的内地内地政府的内地内地政府的内地政府的内地政府的内地政府的内地政府的内地政府的内地政府的内地政府的内地政府的中国内地的中国内地的中国内地的中国内地的中国内地的中国内地的中国内地的中国内地的中国内地的中国内地的中国内地的中国内地的中国内地的中国内地的中国内地的中国内地的中国政府的中国的中国内地的中国内地的中国内地的中国内地的中国的中国内地的中国的中国的中国的中国的中国内地的中国的中国的中国的中国的中国的中国的中国的中国的中国的中国内地的中国的中国的中国的中国的中国的中国的中国的中国的中国的中国的中国的中国的中国的中国内地的中国的中国的中国的中国的中国的中国的中国的中国的中国的中国的中国的中国的中国的中国的中国的中国的中国的中国的中国的中国的中国的中国的中国的中国的中国的中国的中国的中国的中国的中国的中国的中国的中国的中国的中国的中国的中国的03\x00S(\x04\x00\x00\x00S\x05\x00\x00\x00Z.txts\x02\x00\x00\x00w+t\x05\x00\x00\x00HelloN目前40404040X06\x06\0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 x00\x00\x0f\x01\r\x01\x0c\x01' tRp5 tp6(dp7 ttp8 tp9.'2ר1456;ז׀l Ak!
欧元qg¸Ck PCk$ְBkאBkנBk 8Ck
xCk XBkxBk°Ck׀CkנCkDk
@(Ck〜Ck kצCk
ְpg DkDֽF!€qg+~Ck
(丹麦) @k@k xDkר?k@f HDkhDkpDk〜Dk
נDkEk0EkPEkְ“kצ
ְpg!~F,
״Dk

@k @k                      ר?k
我做错了什么

@k @k                      ר?k
f=open("z.txt","w+")
f.write("Hello")
f.seek(0)
content=f.read()
print content
f.close()
我失踪了

f.seek(0)

我认为这是Windows的问题,与文件系统块大小有关。如果在
.read()
之前先
.flush()
这个
.write()
,它会工作得很好。我可以在Win7上复制它

@k @k                      ר?k

(我认为现在的情况是Windows将您的文件分配为4KB的块,因此编写
“Hello”
会将您提升到下一个块大小。如果您在
.read()
之前编写
.flush()
,您会从块的其余部分随机听到乱码,因为Python还没有机会处理它。如果您在
之前编写
.flush()
,read()
ing,Python正确地写出文件,然后得到一个空字符串。)

首先,你的
.read()
将返回一个空字符串,因为写入操作将文件位置放在末尾。其次,
w+
模式会截断文件,导致文件在打开时为空。您看到的额外数据是在该程序运行后添加的。您还对该文件做了什么?显示的代码中没有任何内容会有错误DDE添加了额外的数据,但输出看起来很像您粘贴在这里的内容。这并不能解释您的额外pickle数据,但如果这回答了您的问题。@Martijn Pieters是的,它解决了我的问题,现在文件还包含文本“Hello”而不是其他的胡言乱语。那么胡言乱语是从哪里来的呢?它似乎仍然是个谜;它根本不应该在那里。@Will Vousden这就是为什么我一开始就问这个问题,我不知道胡言乱语是从哪里来的。所以实际上它是python内存处理的一个bug?@user1718294它不是一个bug。python
file.read()
只是底层
fread()
C函数的包装器,它说您应该始终刷新(或查找)流以获得正确的结果。@PaoloMoretti好的,谢谢:)我想知道在读取之前自动刷新已写入的文件是否明智。
@k @k                      ר?k