如何在 python 中以清晰的格式将每个 LIST 作为字段和记录并行保存到 txt 文件

how to save every LIST in parallel as a fields and records to the txt file in a clear formatted way in python

SS1=[(1, 2, 3, 4, 5), (1, 2, 3, 4, 6), (1, 2, 3, 5, 6), (1, 2, 4, 5, 6), (1, 3, 4, 5, 6), (2, 3, 4, 5, 6)]

SS2=[(1, 2, 3, 4), (1, 2, 3, 4), (1, 2, 3, 5), (1, 2, 4, 5), (1, 3, 4, 5), (2, 3, 4, 5)]

SS3=[(1, 2, 3), (1, 2, 3), (1, 2, 3), (1, 2, 4), (1, 3, 4), (2, 3, 4)]

我正在使用以下代码将列表写入文件...但是当我再次写入时,它会添加到文件的最后一行。

但我想要的是....它应该水平附加而不是垂直附加。我的意思是必须像 table 以及字段和记录一样。

所以,对于上面的 ss1,记录行将是 6,并且每次保存都应该将值并行添加为 table 字段和记录方式

ss1 ss2 ss3 1, 2, 3, 4, 5 1, 2, 3, 4 1, 2, 3

def write_to_txt(a, file_name, delimiter=','):
    with open(file_name, 'a') as f:
        for k in SS1:
            fmt = '%s' % delimiter
            f.write(fmt.join(map(str, k)) + '\n')

不仅是写作,还帮助我根据它的数字列将其读回相同数量的列表。

def read_from_txt(file_name):
    with open(file_name, 'r') as f:
        data = [tuple(map(int, k.split(','))) for k in f.read().splitlines()]
    return data

#write_to_txt(SS1, 'ABC.txt')
#data  = read_from_txt('ABC.txt')

不幸的是,文本文件不是这样工作的。如果你想附加 "horizontally",你真正需要做的是

  1. 读取文件的每一行
  2. 将新值附加到每一行(通过将旧字符串与新字符串连接起来)
  3. 写入文件的每一行(现在处于写入模式,而不是追加)。请注意,这需要是一个新文件,或者您应该先读取整个文件并在此处覆盖它。

希望对您有所帮助。

这是一个很好的第一个方法:

SS1=[(1, 2, 3, 4, 5), (1, 2, 3, 4, 6), (1, 2, 3, 5, 6), (1, 2, 4, 5, 6), (1, 3, 4, 5, 6), (2, 3, 4, 5, 6)]

SS2=[(1, 2, 3, 4), (1, 2, 3, 4), (1, 2, 3, 5), (1, 2, 4, 5), (1, 3, 4, 5), (2, 3, 4, 5)]

SS3=[(1, 2, 3), (1, 2, 3), (1, 2, 3), (1, 2, 4), (1, 3, 4), (2, 3, 4)]

ALL = [SS1,SS2,SS3]

def write_to_txt(a, file_name, delimiter=','):
    with open(file_name, 'a') as f:
        for i, ss in enumerate(SS1):
            if i != 0:
                f.write("\n")
            for ss in ALL:
                fmt = '%s' % delimiter
                f.write(fmt.join(map(str, ss[i])) + ",")

write_to_txt("a","lines.txt")