我想替换隐藏文件的内容,所以我试图在w模式下打开它,因此它将被删除/截断:
>>> import os
>>> ini_path = '.picasa.ini'
>>> os.path.exists(ini_path)
True
>>> os.access(ini_path, os.W_OK)
True
>>> ini_handle = open(ini_path, 'w')
Run Code Online (Sandbox Code Playgroud)
但这导致了追溯:
IOError: [Errno 13] Permission denied: '.picasa.ini'
Run Code Online (Sandbox Code Playgroud)
但是,我能够通过r+模式实现预期的结果:
>>> ini_handle = open(ini_path, 'r+')
>>> ini_handle.truncate()
>>> ini_handle.write(ini_new)
>>> ini_handle.close()
Run Code Online (Sandbox Code Playgroud)
问:w和r+模式之间的区别是什么,一个人有"权限被拒绝"但另一个工作正常?
更新:我使用Python 2.6.6在win7 x64上,目标文件有隐藏的属性集.当我尝试关闭隐藏属性时,w模式成功.但当我重新开启时,它再次失败.
问:为什么w模式在隐藏文件上失败?这是已知行为吗?