Python 在文件中逐行追加向量

Python 在文件中逐行追加向量,python,Python,我正在逐行读取一个文件(m.csv),以便为每种电影类型创建一个单位向量。在转到下一行之前,我想在文件本身的每一行末尾追加结果向量。例如: 如果一行包含此电影信息: 1,Four Rooms (1995),Comedy 附加向量将是: 18,Four Rooms (1995),Comedy, [0,1,0,0,0,0] 我只是对如何将向量追加回有一个问题,如下所示: genres = ['unknown', 'Comedy', 'Crime', 'Documentary', 'Drama',

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

如果一行包含此电影信息:

1,Four Rooms (1995),Comedy
附加向量将是:

18,Four Rooms (1995),Comedy, [0,1,0,0,0,0]
我只是对如何将
向量
追加回有一个问题,如下所示:

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!!
genres=[‘未知’、‘喜剧’、‘犯罪’、‘纪录片’、‘戏剧’、‘幻想’]
movieDict={}
将open(路径+'m.csv')作为f:
温度=“”
对于f中的行:
reader=csv.reader(f,分隔符=',')
对于读取器中的行:
l=行[-1]。拆分(“|”)
向量=[0]*6
对于范围内的i(len(l)):
#打印(“%s位于索引=%s!\n”%(l[i],类型索引(l[i]))
如果l[i]在体裁中:
向量[类型索引(l[i])]=1
其他:
向量[类型索引(l[i])]=0

reader[row]=vector#如前所述,试图同时从文件读取和从文件写入将不起作用

您可以将所有数据读入内存(对于一个大文件来说,这可能是不可能的),然后截断原始文件并写入新内容,例如,看看这个,谁的第一个答案会这样做

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

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

@Jean Françoisfare非常感谢。我收到此错误
AttributeError:“\u csv.reader”对象没有属性“append”
。这是因为我使用的是python 2.7吗?对不起!我的意思是
row.append(vector)
您不能更改正在读取的文件。必须将修改后的行写入新文件。此外,由于最后一个字段包含逗号,因此必须用引号括起来:
1,Four Rooms(1995),Comicle,“[0,1,0,0,0,0]”
此外,f:
中的
行也没有用(即使无害……),因为读者将使用所有输入文件