【发布时间】:2021-11-10 23:38:03
【问题描述】:
我正在尝试从 Python 脚本执行此命令:
sed -i s/"exited_cleanly":false/"exited_cleanly":true/ ~/.config/chromium/Default/Preferences
当我从 bash 控制台运行时,它会成功。
但是当我使用以下代码运行时,它不会:
process = subprocess.Popen(['sed', '-i', 's/"exited_cleanly":false/"exited_cleanly":true/', '~/.config/chromium/Default/Preferences'], stdout=subprocess.PIPE)
process.communicate()
>>> sed: can't read ~/.config/chromium/Default/Preferences: No such file or directory
但是这个文件明明是存在的,我能找到,等等
有什么问题?我错过了什么吗?
我使用的是 Python 3.9
谢谢!
爱德华多
【问题讨论】:
-
考虑 Barmar 的 cmets 关于将 JSON 编辑为 JSON 而不是作为回显文本更合理。
-
在过去的生活中,我有一个客户坚持这样做(用他们自己的手动解析器解析我们的 API 响应),这让我的生活变得悲惨;我们会更改库或设置,并且我们的输出将以任何符合标准的解析器都会忽略的方式进行修改,但是他们的会爆炸并且他们会打电话给支持。将 JSON 视为 JSON 而不是将其视为字符串对每个人(包括您未来的自己)来说都会减少麻烦。
标签: python-3.x bash sed subprocess