类似bash的扩展

考虑以下: 导入OS,命令 os.environ ['qwe'] ="带有foo"字符串 a ='$ qwe $ {qwe/foo/baz}' b = commands.getOutput('echo' + a) 这做我想要的,这是要扩展的 根据标准狂欢扩展规则 (所以B现在引用"带有baz的foo字符串的字符串"),), 但这并不正确. 是否有更多的Pythonic方法来解释字符串 要进行单词扩展规则? 依靠命令 感觉像是一个kludge,而Shlex为此做了太多工作 (更不用说它并没有真正解决问题).

# 回答1

有什么东西吗? - 保罗
# 回答2

"比尔" 写道: 好吧,如果您真的想要外壳规则,我认为您不在 运气. 特别是因为这些规则往往会因什么外壳而变化 你正在运行. 我认为即使是Shlex也不会做您想做的事. 如果您只想在示例中使用的简单案例,则可能 在2.4中查看模板模块. <迈克 - - Mike Meyer http://www.mired.org/home/mwm/ 独立www/perforce/freebsd/unix顾问,电子邮件以获取更多信息.
# 回答3

快速浏览参考手册,我认为该管道. 可能会做我想要的. 那是你指的是什么? 我意识到当我醒来时,我还有另一个刺激性: 我需要能够明智地解析命令行. IE 我需要正确解析以下每个字符串: " Echo Foo" "/bin/回声'猫'" " $(哪个回声)foo" 并生成列表: ["/bin/echo",arg] arg是" foo"或" the cat" 我相信模板也会帮助我解决这个问题. 我会调查 今天,狗走了...(注意,Shlex变得很烦人 在这里,它可以正确地将"猫"归为我,但它会分裂 /bin/echo成4个令牌,我现在必须解析) 我目前的解决方案是使用OS.System(A),但我宁愿解析A 并使用EXEC函数. 我不太担心可移植性不同,因为 只要它在(ba)sh中起作用. 另外,我被限制为Python 2.2,所以我 毫无疑问,2.3或2.4中有一个" shinterpret"模块!
# 回答4

嗯,以下会议使我担心: ['/bin/sh','/home/kill','','狗'] 我从A开始,其中包含我担心的3个案例: 扩展$(),可变扩展和包含空白的令牌. b是使用commands.getOutput('echo' +a)生成的. 所以B有大部分 正确的东西,但它失去了帕伦斯,"狗"被拆分了 Shlex. 但是Shlex分解了$(SH). 是正确的行为 shlex? 感觉Shlex应该返回'$(sh)作为一个 令牌.

标签: python

添加新评论