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

如何在Python中重定向输出路径?文件下载场景实操

正确设置下载文件输出路径的方法

你的代码里用os.system("cd Images/Gibiru_pics")是无效的——这条命令只会在临时创建的子shell里切换目录,执行完就销毁了,不会改变当前Python进程的工作目录,所以文件还是会下载到Root目录下。

下面给你两种可行的修改方案:

方案一:构造完整的文件输出路径(推荐)

直接把目标文件夹路径和文件名拼接起来,不用切换目录,逻辑更稳妥:

import os
import requests

def download_url(file_url):
    print("downloading: ", file_url)
    # 提取URL中的文件名
    file_name_start_pos = file_url.rfind("/") + 1
    file_name = file_url[file_name_start_pos:]
    
    # 构造完整输出路径,确保目录存在
    output_dir = "Images/Gibiru_pics"
    os.makedirs(output_dir, exist_ok=True)  # 目录不存在就创建,存在也不报错
    output_path = os.path.join(output_dir, file_name)
    
    r = requests.get(file_url, stream=True)
    if r.status_code == requests.codes.ok:
        with open(output_path, 'wb') as f:
            # 用iter_content分块下载,内存占用更低
            for data in r.iter_content(chunk_size=1024):
                f.write(data)

# 读取URL的代码保持不变
with open('URLS/Gibiru_urls.txt', 'r') as urls:
    for url in urls.readlines():
        url = url.rstrip("\n")
        download_url(url)

方案二:切换当前Python进程的工作目录

如果一定要用切换目录的方式,得用os.chdir()代替os.system,但注意切换后要切回原目录,避免影响后续操作:

import os
import requests

def download_url(file_url):
    print("downloading: ", file_url)
    file_name_start_pos = file_url.rfind("/") + 1
    file_name = file_url[file_name_start_pos:]
    
    # 确保目标目录存在并切换过去
    target_dir = "Images/Gibiru_pics"
    os.makedirs(target_dir, exist_ok=True)
    original_dir = os.getcwd()  # 记录原目录
    os.chdir(target_dir)
    
    r = requests.get(file_url, stream=True)
    if r.status_code == requests.codes.ok:
        with open(file_name, 'wb') as f:
            for data in r.iter_content(chunk_size=1024):
                f.write(data)
    
    os.chdir(original_dir)  # 切回原目录

with open('URLS/Gibiru_urls.txt', 'r') as urls:
    for url in urls.readlines():
        url = url.rstrip("\n")
        download_url(url)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 23:15:33