在Python中将文件更改为只读模式

12 python file-io

我正在编写一个数据处理代码,我在其中创建一个新文件,将处理后的数据写入此文件并关闭.但是文件必须以只读模式关闭,因此不会被意外修改.这可以用Python完成吗?

aru*_*nte 17

为此,你使用 os.chmod

import os
from stat import S_IREAD, S_IRGRP, S_IROTH

filename = "path/to/file"
os.chmod(filename, S_IREAD|S_IRGRP|S_IROTH)
Run Code Online (Sandbox Code Playgroud)

请注意,这假定您具有适当的权限,并且您希望的不仅仅是所有者能够读取文件.如果不是这样,则删除S_IROTHS_IRGRP视情况而定.

UPDATE

如果您需要再次使文件可写,只需os.chmod按如下方式调用:

from stat import S_IWUSR # Need to add this import to the ones above

os.chmod(filename, S_IWUSR|S_IREAD) # This makes the file read/write for the owner
Run Code Online (Sandbox Code Playgroud)

只需在打开文件进行写入之前调用它,然后调用第一个表单,在完成后再次将其设置为只读.


Tri*_*tan 5

此解决方案保留文件的先前权限,就像命令一样 chmod -w FILE

import os
import stat

filename = "path/to/file"
mode = os.stat(filename).st_mode
ro_mask = 0o777 ^ (stat.S_IWRITE | stat.S_IWGRP | stat.S_IWOTH)
os.chmod(filename, mode & ro_mask)    
Run Code Online (Sandbox Code Playgroud)