Python文件要求

Python文件要求,python,file,Python,File,我有一个简单的txt文件,它由许多行组成。像下面这样 Name1 0 0 0 0 Name2 0 0 0 0 Name3 ... ... ... 由。。。我的意思是,文件以同样的方式继续,直到无限 现在我的问题是,如何创建某种文件控件?我希望该文件仅在文件大纲为上述格式时使用 我当前的一段代码包含一个Try-Except部分,如下所示: def foo try: content = open("filename.txt") except: f

我有一个简单的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您永远不会因为文件的格式不符合预期而覆盖它。您可能会覆盖导入数据,因为用户键入了文件名。2某种形式的代码将是检查文件格式的唯一方法。在运行这个程序之前,您可以编写另一个要运行的程序,但这样做既麻烦又不明智。如果遇到格式错误的行,只需抛出一个错误。你的尝试/例外完全失败了。进入except块的唯一方法是创建错误的文件,因此except块中不存在文件。我的想法是:我想创建一个对象列表,其中文件中的每一行都是一个对象。如果不存在具有该名称和我想要的特定大纲的文件,那么我希望使用一些初始值创建该文件。你将如何实现这一点?。那你就照常写吧。我看不出我的努力有多失败。我没有在这段代码中包含save函数,这可能就是它不适用于您的原因。因为我目前正在运行我想要的程序,但我只想创建文件控件。代码的逻辑是,如果文件filename.txt不存在,则无法创建文件,因此它将跳入except并使用该代码创建文件。它正在工作,所以不确定为什么我的逻辑不正确
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")