在文件中逐行追加向量

时间:2017-04-03 15:46:35

标签: python

我正在逐行读取文件(m.csv),以便为每个电影类型创建一个单位向量。我想在结束下一行之前将结果向量附加到文件本身每行的末尾。例如:

如果某行有此电影信息:

1,Four Rooms (1995),Comedy

附加的矢量将是:

18,Four Rooms (1995),Comedy, [0,1,0,0,0,0]

我对如何将vector追加到以下内容时遇到问题:

genres = ['unknown', 'Comedy', 'Crime', 'Documentary', 'Drama', 'Fantasy']


movieDict = {}
with open(path + 'm.csv') as f:
    temp = ''
    for line in f:
        reader = csv.reader(f, delimiter=',')
        for row in reader:
            l = row[-1].split('|')
            vector = [0] * 6
            for i in range(len(l)):
                # print ("%s is at index=%s! \n" % (l[i], genres.index(l[i])))
                if l[i] in genres:
                    vector[genres.index(l[i])] = 1
                else:
                    vector[genres.index(l[i])] = 0
            reader[row] = vector # <<<<<< I am stuck here!!

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

据评论,尝试从文件中读取并同时从文件中写入不会起作用。

您可以将所有数据读入内存(对于大文件可能无法读取),然后截断原始文件并编写新内容,例如,请参阅第一个答案执行此操作的question

with open(path, 'r+') as f:
    lines = f.readlines()
    f.seek(0)
    f.truncate()

替代方法是打开一个新文件进行写入,然后从一个文件中读取一行,然后写入另一个文件。您可以删除原始文件,然后重命名第二个文件。