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

调用带格式字符串的date命令时出现NameError如何修复?

问题原因与解决方法

你的错误是字符串引号嵌套导致的语法问题:Python里用双引号定义cmd变量时,date +"后面的双引号会提前结束整个字符串,剩下的%a会被Python当成未定义的变量,所以抛出NameError。

下面是三种可行的修复方案:

方案1:用单引号包裹整个命令字符串

把外层的双引号换成单引号,这样内部的双引号就不会被Python误解析:

import subprocess

cmd = 'date +"%a %b %d %r"'
date = subprocess.check_output(cmd, shell=True)

方案2:转义内部的双引号

在内部的双引号前添加反斜杠\,告诉Python这是字符串的一部分,不是结束标记:

import subprocess

cmd = "date +\"%a %b %d %r\""
date = subprocess.check_output(cmd, shell=True)

方案3:推荐——不用shell=True,拆分命令为列表(更安全)

shell=True存在潜在的shell注入风险,更规范的写法是把命令和参数拆分成列表传递,这样不需要处理引号嵌套:

import subprocess

cmd = ['date', '+%a %b %d %r']
date = subprocess.check_output(cmd)

终端里直接运行命令没问题,是因为shell会直接处理引号的嵌套逻辑,和Python的字符串解析规则不同。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 10:21:03