簡體   English   中英

"在 Python 中將文件更改為只讀模式"

[英]Change file to read-only mode in Python

我正在編寫一個數據處理代碼,在其中創建一個新文件,將處理后的數據寫入該文件並關閉。 但該文件必須以只讀模式關閉,以免被意外修改。 這可以在 Python 中完成嗎?

為此,您使用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)

請注意,這假定您具有適當的權限,並且您不僅希望所有者能夠讀取文件。 如果不是這種情況,請酌情刪除S_IROTHS_IRGRP

更新

如果您需要再次使文件可寫,只需像這樣調用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

只需在打開文件進行寫入之前調用它,然后在完成后調用第一個表單使其再次只讀。

此解決方案保留文件的先前權限,作用類似於命令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)    

使用pathlib.Path<\/code> ,對於現代 python3,使用path.chmod(mode: int)<\/code>

八進制模式可以指定為0o444<\/code> (只讀)。 有關更多 chmod 模式選項,請參閱此內容<\/a>。

請注意,如果要應用於符號鏈接本身,請參閱path.lchmod<\/code> 。 對於path.chmod<\/code> ,在 3.10 之后,現在還有一個follow_symlinks = True<\/code>參數。

在 Windows 上,這對於任何事情來說可能都不夠,只能處理只讀標志。 請參閱其他 SO 帖子[1]<\/a> 。

對於 Windows 操作系統,也許可以嘗試這樣的事情:

import os

filename = open("file_name.txt", "w")
filename.write("my text")
filename.close()
os.system("attrib +r file_name.txt")

我想您可以在寫入文件后使用 os 模塊來更改文件權限,如下所示:

import os
filename=open("file_name","w")
filename.write("my text")
filename.close()
os.system("chmod 444 file_name")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM