Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中更新CSV文件_Python_Python 3.x_Csv - Fatal编程技术网

在Python中更新CSV文件

在Python中更新CSV文件,python,python-3.x,csv,Python,Python 3.x,Csv,我正在尝试更新csv文件,https://www.kaggle.com/carolzhangdc/imdb-5000-movie-dataset 在这个csv文件的末尾,我试图将一个新的url附加到电影的图像中 我的代码在下面 import csv from bs4 import BeautifulSoup import urllib2 with open('movie_metadata.csv') as csv_file: csv_reader = csv.reader(csv_fi

我正在尝试更新csv文件,
https://www.kaggle.com/carolzhangdc/imdb-5000-movie-dataset

在这个csv文件的末尾,我试图将一个新的url附加到电影的图像中

我的代码在下面

import csv
from bs4 import BeautifulSoup
import urllib2

with open('movie_metadata.csv') as csv_file:
    csv_reader = csv.reader(csv_file, delimiter=',')
    line_count = 0
    for row in csv_reader:
        if line_count == 0:
            print('Column names are {}'.format(", ".join(row)))
            row[-1] = "movie_links"
            line_count += 1
        else:
            imdb_link = row[17]
            soup = BeautifulSoup(urllib2.urlopen(imdb_link).read(), features="html.parser")
            link = soup.find_all('div', {'class': 'poster'})
            if link:
                row[-1] = link[0].find('img')['src']
            line_count += 1
    print('Processed {} lines.'.format(line_count))
我正在
行[-1]
处创建新行,并尝试更新csv文件
如果链接:


但它根本没有更新我的csv文件,在我运行代码后它保持不变。

您知道您覆盖了数组
行中的最后一个元素吗?您应该
append()
而不是更改
[-1]
。尝试:

行。追加(“电影链接”)
而不是
行[-1]=“电影链接”

row.append(链接[0]。查找('img')['src'])
而不是
row[-1]=link[0]。查找('img')['src'])

然后,要实际编写CSV文件,请将
CSV.writer
与新行一起使用(此处的文档:)


注意,
row+[“movie links”]
对于第一个是另一种附加方式。使用
[-1]
覆盖最后一个元素,而不是追加!如果您想让我为csv写入部分编码,请告诉我。

您是否意识到覆盖了数组
行中的最后一个元素?您应该
append()
而不是更改
[-1]
。尝试:

行。追加(“电影链接”)
而不是
行[-1]=“电影链接”

row.append(链接[0]。查找('img')['src'])
而不是
row[-1]=link[0]。查找('img')['src'])

然后,要实际编写CSV文件,请将
CSV.writer
与新行一起使用(此处的文档:)


注意,
row+[“movie links”]
对于第一个是另一种附加方式。使用
[-1]
覆盖最后一个元素,而不是追加!如果您想让我为您编写csv写入部分的代码,请告诉我。

您似乎没有回信?您正在使用csv阅读器。读者不写作。使用csv编写器进行编写。尝试就地修改csv将比您需要的困难得多。您需要读取整个文件,创建新内容,并在1个goSeems中覆盖整个文件,就像您没有回写一样?您正在使用csv阅读器。读者不写作。使用csv编写器进行编写。尝试就地修改csv将比您需要的困难得多。您需要在中读取整个文件,创建新内容,然后一次性覆盖整个文件