如何防止在Python 3中重命名文本文件?

时间:2018-09-04 18:13:33

标签: python python-3.x

我制作了一个将文本附加到文本文件中的程序。问题是如果用户重命名了该文本文件,该程序将创建另一个文本文件,并将文本附加到新的文本文件中。因此,我想防止将原始文本文件重命名,但允许用户仍然能够打开它。如何在Python 3中执行此操作?

我尝试了Ryan Schaefer的答案,但是在运行代码时出现此错误:错误:PermissionError:[Errno 13]权限被拒绝

2 个答案:

答案 0 :(得分:3)

如果您的代码写入文件,并且用户可以通过其他方式直接打开文件,并且希望防止它们重命名,那么您需要使用用户权限设置来获取操作系统来保护它。 。这在很大程度上取决于您的操作系统以及文件的存储位置,因此请查找您自己的系统,可能还需要Python的sysDECLARE @confinPerc float, @setCount integer SET @confinPerc = .95 SET @setCount = 5 DROP TABLE IF EXISTS #R_RES; CREATE TABLE #R_RES(res float); DECLARE @sql nvarchar(100) SET @sql =N'SELECT ' + CAST(1-@confinPerc AS NVARCHAR) + ' AS prob, ' + CAST(@setCount - 2 AS NVARCHAR) + ' AS dF;' INSERT INTO #R_RES EXECUTE sp_execute_external_script @language = N'R' ,@script = N' res <- qt(1-InputDataSet$prob/2,InputDataSet$dF); df <- data.frame(res);' ,@input_data_1 = @sql ,@output_data_1_name = N'df'; SELECT * FROM #R_RES; 模块可能有助于应用这些安全系统。

但是请注意,如果您要编写功能强大的软件,则应在运行时处理此类错误情况。如果用户重命名了文件,并且该文件不再存在于您期望的位置,请重新生成该文件或正常出错。对于大多数用户可能会对其内部进行修补的软件,每当您与代码外的任何内容进行交互(并且从磁盘上读取文件绝对是“外部世界”)时,您都需要处理该过程中的任何潜在错误。

答案 1 :(得分:0)

您需要做的就是更改文件的权限,使其只读,可以这样做:

import os
from stat import S_IREAD, S_IRGRP, S_IROTH

filename = "path/to/file"
os.chmod(filename, S_IREAD|S_IRGRP)

该脚本很可能必须以管理员身份运行才能运行。