Python 如何在文件中保存两列数组

How to save two-column array in a file in Python

我有这段代码(参见 )用于在文件中保存两列数组。问题是我需要调用这个函数 N 次:

   def save(self):
        n=self.n
        with open("test.csv","a") as f:
            f.write("name\tnum\n")
            for k, v in tripo.items():
                if v:
                    f.write(n+"\t")
                    f.write("{}\n".format(k.split(".")[0]))
                    for s in v:
                        f.write(n+"\t")
                        f.write("\n".join([s.split(".")[0]])+"\n")

这是 tripo 的示例内容 for n=1:

{
'1.txt': [], 
'2.txt': [], 
'5.txt': [], 
'4.txt': ['3.txt','6.txt'],
'7.txt': ['8.txt']
}

这是 n=1...N 的预期输出:

name num
1  4
1  3
1  6
1  7
1  8
...
N 3
N 6
N ...

但是,上面给出的代码将一些值放在同一列中。

更新: 例如,如果我有这个字符串 '170.txt': ['46.txt','58.txt','86.txt'],那么我会收到这个结果:

1   1   1   1   170
46
58
86

而不是:

1  170
1  46
1  58
1  86

使用Pickle。使用 pickle.dump 存储到文件并使用 pickle.load 加载它。

我不太明白你的问题。

是否对象表示正确但文件中的写法不正确?

如果是 Dan 所说的情况,使用 pickle 可能会有用。

import pickle;

s = pickle.dumps(object); 
f.write(s); 
f.close(); 

#for reading; 
f = open('test.csv', 'rb');
serialized_object = pickle.load(f)

serialized_object变量应具有您要保留的结构。

import os

tripo = [
('1.txt', []), 
('2.txt', []), 
('5.txt', []), 
('4.txt', ['3.txt','6.txt']),
('7.txt', ['8.txt'])
]

def getname(f):
    return os.path.splitext(f)[0]

def getresult(t):
    result = []
    for k, v in tripo:
        values = [getname(n) for n in v]
        if len(values)>0:
            result.append(getname(k))
        for x in values:
            result.append(x)
    return result

def writedown(n,r):
    with open("test.csv","a") as f:
        for x in r:
            f.write("%s\t%s\n" % (n,x))
            print("%s\t%s\n" % (n,x))

print(getresult(tripo))

writedown(1, getresult(tripo))