如何在 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",你真正需要做的是
- 读取文件的每一行
- 将新值附加到每一行(通过将旧字符串与新字符串连接起来)
- 写入文件的每一行(现在处于写入模式,而不是追加)。请注意,这需要是一个新文件,或者您应该先读取整个文件并在此处覆盖它。
希望对您有所帮助。
这是一个很好的第一个方法:
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")
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",你真正需要做的是
- 读取文件的每一行
- 将新值附加到每一行(通过将旧字符串与新字符串连接起来)
- 写入文件的每一行(现在处于写入模式,而不是追加)。请注意,这需要是一个新文件,或者您应该先读取整个文件并在此处覆盖它。
希望对您有所帮助。
这是一个很好的第一个方法:
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")