我制作了一个将文本附加到文本文件中的程序。问题是如果用户重命名了该文本文件,该程序将创建另一个文本文件,并将文本附加到新的文本文件中。因此,我想防止将原始文本文件重命名,但允许用户仍然能够打开它。如何在Python 3中执行此操作?
我尝试了Ryan Schaefer的答案,但是在运行代码时出现此错误:错误:PermissionError:[Errno 13]权限被拒绝
答案 0 :(得分:3)
如果您的代码写入文件,并且用户可以通过其他方式直接打开文件,并且希望防止它们重命名,那么您需要使用用户权限设置来获取操作系统来保护它。 。这在很大程度上取决于您的操作系统以及文件的存储位置,因此请查找您自己的系统,可能还需要Python的sys
或DECLARE @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)
该脚本很可能必须以管理员身份运行才能运行。