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

Python临时目录中文件移动后未被识别,如何正确迁移并编辑?

问题解决:将文件移入临时目录并修改

你的代码存在两个关键问题,导致文件路径不被识别:

  • urllib.request.urlretrieve(sub_odk_url, 'sub_odk.xlsx') 会把文件下载到当前工作目录,而非你创建的临时目录。后续拼接临时目录路径与文件名后,该路径下并无对应文件,因此isfile返回False。
  • isfile(sub_odk_path.read()) 用法错误:isfile需要传入路径对象或字符串,不能调用read()(这是读取文件内容的方法,会引发错误)。

以下是两种可行的解决方案:

方法1:直接下载文件到临时目录

让urlretrieve直接将文件保存到临时目录,省去后续移动步骤:

import tempfile
from pathlib import Path
import urllib.request
from os.path import isfile

with tempfile.TemporaryDirectory() as workdir:
    temp_dir = Path(workdir)
    print(temp_dir)

    # 直接指定临时目录下的完整保存路径
    sub_odk_path = temp_dir / 'sub_odk.xlsx'
    urllib.request.urlretrieve(sub_odk_url, str(sub_odk_path))  # 将Path对象转为字符串传入

    # 正确检查文件是否存在
    print('test: ', sub_odk_path, ' Path exists:', isfile(sub_odk_path))

    # 在临时目录内修改文件
    with open(sub_odk_path, 'r+') as f:
        content = f.read()
        # 执行自定义修改操作,示例:替换文本
        modified_content = content.replace('placeholder', 'updated_content')
        f.seek(0)
        f.write(modified_content)
        f.truncate()

方法2:先下载再移动到临时目录

若需先在其他位置处理文件,再移入临时目录,可使用shutil.move:

import tempfile
from pathlib import Path
import urllib.request
from os.path import isfile
import shutil

with tempfile.TemporaryDirectory() as workdir:
    temp_dir = Path(workdir)
    print(temp_dir)

    # 先下载到系统默认临时位置(urlretrieve自动生成临时文件)
    sub_odk_temp_path, _ = urllib.request.urlretrieve(sub_odk_url)
    
    # 定义临时目录内的目标路径
    sub_odk_target_path = temp_dir / 'sub_odk.xlsx'
    # 移动文件到临时目录
    shutil.move(sub_odk_temp_path, sub_odk_target_path)

    # 检查文件是否存在
    print('test: ', sub_odk_target_path, ' Path exists:', isfile(sub_odk_target_path))

    # 在临时目录内修改文件
    # ... 执行与方法1相同的编辑操作即可

额外说明

  • 借助with tempfile.TemporaryDirectory()上下文管理器,临时目录会在代码块结束后自动删除,所有文件操作必须放在该代码块内完成。
  • 如果你习惯使用pathlib.Path的API,可直接用sub_odk_path.exists()替代isfile,写法更统一:print('Path exists:', sub_odk_path.exists())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 05:48:24