2016-04-14 74 views
0

我想打开一个文件,阅读内容,比较与散列,如果有必要再覆盖文件。应该是基本的东西,但不知何故我无法让它工作。我现在有:Python阅读()不工作

with open(name, 'wb+') as des: 
    current_content = des.read() 

我100%肯定该文件不是空的,我期待在正确的文件(以后的数据被写入到它,这工作),但不知何故current_content作为结束空字符串。

with open(name, 'wb+') as des: 
    des.write('Test') 
    des.seek(0) 
    current_content = des.read() 

如果我尝试上述current_content将返回'测试'。任何人都知道什么会导致这种行为?

+1

w +根据open()文档截断文件。 – srowland

回答

1

将文件读取选项wb+更改为ab+并立即测试。问题是ab+支持根据文档在二进制文件中读取和追加数据(At EOF)。当您使用wb+时,它可能会覆盖现有文件。

+0

我现在很困惑,因为我认为ab +和wb +之间的唯一区别就是指针,开始或EOF的位置。切换到ab +不起作用,但切换到ab +并在我读取之前将seek(0)固定。 所以如果我理解正确wb打开时立即覆盖文件? – Matthieu

+0

我正在寻找相同的想法,即'wb +'在打开时覆盖文件。但文件中隐含了重写。如果我记得正确,''read''函数开始从头读取文件。所以寻求文件的开始。 – Mitty