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

从网站TXT获取代码写入Python临时可执行文件报错求助

问题分析与解决

你遇到的TypeError是因为urlopen()返回的是HTTPResponse对象,不是本地文件路径字符串,而open()函数只接受文件路径类的参数,直接用它调用open()必然报错。

要实现从网站获取TXT代码并生成可执行临时Python脚本,正确步骤如下:

  • 先从URL读取文本内容
  • 创建带文件名的临时文件(执行脚本必须有可访问的文件名,tempfile.TemporaryFile无公开文件名,不适用)
  • 将读取到的代码写入临时文件
  • 执行该临时脚本
  • 确保临时文件被清理

修正后的代码:

from urllib.request import urlopen
import tempfile
import subprocess
import os

# 1. 从目标URL读取脚本内容
response = urlopen("https://randomsiteeeee.000webhostapp.com/script.txt")
script_content = response.read().decode('utf-8')  # 把字节内容解码为字符串

# 2. 创建带.py后缀的临时文件,保留文件名以便执行
with tempfile.NamedTemporaryFile(mode='w', suffix='.py', delete=False) as temp_file:
    temp_file.write(script_content)
    temp_file_path = temp_file.name

try:
    # 3. 运行临时Python脚本
    subprocess.run(['python', temp_file_path], check=True)
finally:
    # 4. 无论执行结果如何,清理临时文件
    os.remove(temp_file_path)

关键细节:

  • NamedTemporaryFile:生成可被外部进程访问的文件名,满足脚本执行的路径需求;TemporaryFile仅能通过当前进程句柄访问,无法用于外部调用。
  • decode('utf-8'):将HTTP响应的字节数据转为字符串,确保文本内容正确写入文件。
  • finally块:保证临时文件在脚本执行完成后被删除,避免残留文件占用空间。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 19:01:19