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

使用subprocess调用wget下载tar文件时报cannot assign to literal错误怎么办

错误原因

你遇到的cannot assign to literal报错和代码的语法、subprocess模块的调用规则不规范直接相关,核心问题有3个:

  • 字符串标识缺失:web_dnld_file.tar和下载URL你都没有加引号包裹,Python会把它们识别为变量/对象属性而非字符串字面量,两个无运算符连接的标识符并排,Python解析时会误判为你在尝试给字面量赋值,直接触发该报错。
  • subprocess传参规则错误:如果使用列表形式传命令参数,需要把命令、参数、参数值拆成独立的列表元素,不能把wget -O合并成单个元素;同时subprocess捕获输出的参数为capture_output,不是capture。
  • 基础语法错误:第二个args的写法中,列表用了左方括号、右圆括号配对,属于语法错误。
修复方案

推荐使用更安全的列表参数写法,避免shell注入风险:

import subprocess

# 文件名、URL如果是固定值,加引号作为字符串传入,每个命令部分拆成独立列表元素
run_result = subprocess.run(
    ["wget", "-O", "web_dnld_file.tar", "替换为你的实际下载URL"],
    capture_output=True,
    text=True
)

# 可查看执行状态
print("执行返回码:", run_result.returncode) # 返回0代表下载成功
if run_result.returncode != 0:
    print("错误信息:", run_result.stderr)

如果你的文件名、URL是动态变量,直接传入变量即可,不需要加引号:

import subprocess

save_file = "web_dnld_file.tar"
download_url = "替换为你的实际下载URL"
run_result = subprocess.run(
    ["wget", "-O", save_file, download_url],
    capture_output=True,
    text=True
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 13:06:04