Python - 文件要求

时间:2015-01-11 21:13:46

标签: python file

我有一个简单的txt文件,它由许多行组成。像下面的东西

Name1
0
0
0
0
Name2
0
0
0
0
Name3
...
...
...

(通过......我的意思是文件以相同的方式继续,直到无限假设)

现在我的问题是,如何创建某种"文件控件"?我想只在文件大纲是上面提到的形式时才使用该文件。

我目前的一段代码包含一个Try-Except部分,如下所示:

def foo

    try:
        content = open("filename.txt")

    except:
        file1 = [name1,0,0,0,0,name2,0,0,0,0....]
        save(file1)

        content = open("filename.txt")

    lscontent = content.read().splitlines()
    file.close()

save()的功能非常明显。它只会以我希望的形式创建列表并将其保存到文件中。像初始值的东西。我的麻烦是,如果用户更改文件格式或文件损坏,那么程序很可能会崩溃。

在启动程序本身之前,是否有任何简单的想法可以控制它?如果文件损坏,我想用初始值替换文件,这意味着我希望文件控件位于函数foo的try部分。当然,我希望正确的文件具有上述结构。

1 个答案:

答案 0 :(得分:0)

from shutil import copyfile
import re

is_number_or_varname = re.compile("(\d+|[a-z]\w*)$", re.I).match

def get_good_file(fname, line_rule, default_fname):
    with open(fname) as inf:
        if all(line_rule(line) for line in inf):
            inf.seek(0)
            return inf.readlines()
    # else
    copyfile(default_fname, fname)
    with open(default_fname) as inf:
        return inf.readlines()

data = get_good_file("filename.txt", is_number_or_varname, "defaults.txt")