我正在编写一个数据处理代码,我在其中创建一个新文件,将处理后的数据写入此文件并关闭.但是文件必须以只读模式关闭,因此不会被意外修改.这可以用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_IROTH并S_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)
只需在打开文件进行写入之前调用它,然后调用第一个表单,在完成后再次将其设置为只读.
此解决方案保留文件的先前权限,就像命令一样 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)