Python 防止文件被修改

标签 python

我正在为天普大学的类(class)编写 Hacker Rank 风格的离线应用程序。我有一个 task.py,用户应该在其中编写自己的代码。我有一个 test.py,我在其中创建了一个模块来测试用户的代码。

我正在使用 Thonny,因为它需要的资源非常少,如果学生家里没有互联网,代码就是为他们编写的,这被假定为是。

这里是 task.py 的例子

import sys
def variables():
    f = open('test.txt', 'w')

    #Start your code below (tip: Make sure to indent your code)
    penguin = "Penguin"
    six = "6"
    false = "False"
    none = "None"
    a = "100.66"
    f.write(penguin+"\n")
    f.write(six+"\n")
    f.write(false+"\n")
    f.write(none+"\n")
    f.write(a+"\n")

    print(penguin)
    print(6)
    print(false)
    print(none)
    print(a)

    f.close()

这是我的测试文件,test.py

from task import variables
import filecmp, os

variables()
a=filecmp.cmp("test.txt","ans.txt")
if a == True:
    print("Test Case Passed")
os.remove("test.txt")`

我需要将 test.py 文件锁定以便学生无法修改它,但我需要它能够被调用。有什么想法吗?

最佳答案

有一个名为 portalocker ( https://pypi.python.org/pypi/portalocker ) 的跨平台文件锁定模块,但如果您不想使用它,您可以检查其他东西。使用操作系统功能

last_mod = os.path.getmtime('test.txt')

将为您提供文件的最后一次修改时间,如果最后一次修改的时间与创建文件的时间不同,则表示有人对其进行了编辑。这只是 portalocker 的替代方法...只需在某处保留 og 文件的副本,如果修改时间不同,只需让 python 将副本写入修改后的文件即可。我强烈建议只使用这个模块,因为您可以从中使用更多很酷的功能。如果您有任何其他问题,请发表评论。

关于Python 防止文件被修改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48950054/

相关文章:

python - 这两个Python代码有什么区别?为什么结果不同?

python - pyqtgraph 文档示例不适用于 PySide

python - 派克: 'dynamically' append to qtextedit from function

python - 从两个列表中解密代码

python - 如何在 python 中逐个字符地拆分 unicode 字符串?

python - 如何修复 djangos 的 decotators 错误 : Wrapped class must subclass ModelAdmin

python - 使用 sum 函数时遇到问题

python - Kaggle API *在* python 中的文档?

python - anaconda环境安装本地包

python - 类型错误 : 'NoneType' object is not iterable in maya python