You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django 1.11(Python3.6)中从URL下载文本文件到项目目录

当然可以!用Python下载这些文本文件超简单的,结合你用的Python 3.6环境,我给你写个实用的脚本,还会考虑到异常处理和目录创建的细节,确保文件能顺利保存到指定目录且保留原文件名~

实现步骤与代码示例

1. 先安装依赖库

首先确保你安装了requests库(如果没装的话),选一个兼容Python 3.6的版本,在终端运行:

pip install requests==2.26.0

2. 编写下载脚本

下面的代码会遍历你提供的链接列表,逐个下载文件,保存到指定目录(比如./downloaded_files/),并且严格保留原文件名(file1.txt、file2.txt这些):

import os
import requests

def download_files(url_list, save_dir):
    # 自动创建保存目录,已存在的话不会报错
    os.makedirs(save_dir, exist_ok=True)
    
    for url in url_list:
        try:
            # 发送GET请求获取文件内容,设置超时避免卡住
            response = requests.get(url, timeout=10)
            response.raise_for_status()  # 遇到HTTP错误(比如404、500)直接抛出异常
            
            # 从URL里提取原文件名:拆分query参数中的file值
            filename = url.split('file=')[-1]
            # 拼接完整的保存路径
            save_path = os.path.join(save_dir, filename)
            
            # 以文本模式写入文件,用utf-8编码避免乱码
            with open(save_path, 'w', encoding='utf-8') as f:
                f.write(response.text)
            
            print(f"✅ 成功下载:{filename}")
        
        except requests.exceptions.RequestException as e:
            print(f"❌ 下载{url}失败:{str(e)}")
        except Exception as e:
            print(f"⚠️ 处理{url}时出错:{str(e)}")

# 替换成你的文件链接列表
file_urls = [
    "http://mylinks/telechargement.php?file=file1.txt",
    "http://mylinks/telechargement.php?file=file2.txt",
    # 可以继续添加更多链接
]

# 指定你要保存的目录路径
save_directory = "./downloaded_files"

# 执行下载任务
download_files(file_urls, save_directory)

3. 关键细节说明

  • 目录自动创建:用os.makedirs的exist_ok=True参数,不用担心目录已存在的问题;
  • 文件名保留:通过拆分URL中的file=参数精准获取原文件名,完全符合你“不修改结构”的需求;
  • 异常防护:捕获了请求超时、HTTP错误等常见问题,单个文件下载失败不会导致整个脚本中断;
  • 编码处理:默认用utf-8编码写入,如果你的文本文件是其他编码(比如GBK),可以修改open函数里的encoding参数。

4. Django项目中使用的小提示

如果要在你的Django 1.11项目中运行这段代码,推荐把它做成自定义管理命令:

  1. 在你的app下创建management/commands目录(记得加__init__.py);
  2. 把上面的代码放到一个.py文件里(比如download_text_files.py),并添加Django命令的必要结构:
from django.core.management.base import BaseCommand
# 导入上面的download_files函数或者直接把代码写在这里

class Command(BaseCommand):
    help = '下载指定链接的文本文件到指定目录'

    def handle(self, *args, **options):
        # 这里调用download_files函数即可
        file_urls = [
            "http://mylinks/telechargement.php?file=file1.txt",
            "http://mylinks/telechargement.php?file=file2.txt",
        ]
        save_directory = "./downloaded_files"
        download_files(file_urls, save_directory)
        self.stdout.write(self.style.SUCCESS('所有下载任务完成!'))

之后你就可以在终端运行python manage.py download_text_files来执行下载了。

内容的提问来源于stack exchange,提问作者Fabe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:03:59