拒绝在python中读取文件的一部分

时间:2012-10-16 12:50:32

标签: python security io text-files

我有一个文本文件,我使用两个写函数:1)正常写入,2)安全写入。

现在,当我想从文件中读取数据时,我应该只能读取使用“正常写入”功能写入的数据,并且不应该能够读取使用“安全写入”功能写入的数据。

我的想法是使用密钥作为标志来使用字典,以检查该值是使用正常写入还是安全写入来写入。

我怎样才能在Python中执行此操作?

1 个答案:

答案 0 :(得分:1)

这完全取决于您对数据的安全性。最好的解决方案是使用加密或多个文件,或两者兼而有之。

如果您只是想要一个程序可以用来判断文件中的数据是正常还是安全的标志,那么有几种方法可以做到。

  • 您可以在每次写作时添加标题。
  • 您可以使用指示安全级别的标志开始每一行,然后只读取具有正确标志的行。
  • 您可以拥有整个文件的标题,指示文件的安全部分和非文件的部分。

这是我使用第一个选项实现它的方法。

normal_data = "this is normal data, nothing special"
secure_data = "this is my special secret data!"

def write_to_file(data, secure=False):
    with open("path/to/file", "w") as writer:
        writer.write("[Secure Flag = %s]\n%s\n[Segment Splitter]\n" % (secure, data))

write_to_file(normal_data)
write_to_file(secure_data, True) 

def read_from_file(secure=False):
    results = ""
    with open("path/to/file", "r") as reader:
        segments = reader.read().split("\n[Segment Splitter]\n")
    for segment in segments:
        if "[Secure Flag = %s]" % secure in segment.split("\n", 1)[0]:
            results += segment.split("\n", 1)[0]
    return results

new_normal_data = read_from_file()
new_secure_data = read_from_file(True)

这应该有效。但它不是保护数据的最佳方式。