在Python中将大量列表写入txt文件

fykwrbwg  于 2023-06-04  发布在  Python
关注(0)|答案(2)|浏览(160)

我试图保存链接到照片的主题在一个互联网论坛在一个txt文件。我尝试了很多方法,但是一个页面的链接保存在一个txt文件中,当循环到主题的下一页时,以前的链接被删除,新的链接被替换!我想把所有的链接都放在一起。
这是我的代码:

from bs4 import BeautifulSoup
import requests

def list_image_links(url):
    response = requests.get(url)

    soup = BeautifulSoup(response.content, "html.parser")
    
    # Separation of download links
    image_links = []
    for link in soup.find_all('a'):
        href = link.get('href')
        if href is not None and 'attach' in href and href.endswith('image')==False:
            image_links.append(href)
    
    # Writing links in a txt file
    with open('my_file.txt', 'w') as my_file:
        my_file.write('image links:' + '\n')    
        for branch in image_links:
            my_file.write(branch + '\n')
            print('File created')
    
# Browse through different pages of the topic
i = 0
while i <= 5175:
    list_image_links(f'https://forum.ubuntu.ir/index.php?topic=211.{i}')
    i = i+15

从注解中可以清楚地看到每个部分的作用。
提前感谢您的帮助。

hiz5n14c

hiz5n14c1#

您需要追加到文件。这可以通过使用'a'而不是'w'作为open()的参数来实现。
当使用'w'时,如果文件不存在,则会创建一个文件,并且总是首先截断该文件,这意味着它将覆盖其内容。另一方面,对于'a',如果文件还不存在,也会创建文件,但如果文件已经存在,它不会截断,而是追加到文件的末尾,这意味着内容不会被覆盖。
参见Python文档。
比如这条线

with open('my_file.txt', 'w') as my_file:

将需要更改为:

with open('my_file.txt', 'a') as my_file:
dohp0rv5

dohp0rv52#

你打开的文件带有'w',即“打开一个文件进行写入。如果文件不存在,则创建新文件;如果文件存在,则截断该文件
用'a'打开它,“打开以追加到文件末尾而不截断它。如果文件不存在,则创建新文件。”
参见:https://www.programiz.com/python-programming/methods/built-in/open

相关问题