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)]
我正在使用以下代码将我的列表写入文件...但是当我再次写入时,它会添加到文件的最后一行。
但我想要的是....它应该水平追加,而不是垂直追加。我的意思是必须像表格、字段和记录一样。
因此,对于上述ss1
记录行将为 6,并且每次保存都应将值并行添加为表字段和记录方式
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')
这是一个很好的第一句话:
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")
不幸的是,这不是文本文件的工作方式。如果你想"水平"附加,你真正需要做的是
- 读取文件的每一行
- 将新值附加到每一行(通过将旧字符串与新字符串连接起来( 写入
- 文件的每一行新行(现在处于写入模式,而不是追加(。请注意,这需要针对一个新文件,或者您应该先读取整个文件并在此处覆盖它。
希望有帮助。