【发布时间】:2020-12-03 20:59:54
【问题描述】:
大家好,我是使用 python 编写的新手,我正在尝试如何将变量解析到 shell 中。 例如;
#!/usr/python3
import os
import subprocess
sometext = 'Hello World'
os.system("echo $sometext")
这不会返回任何内容,我假设这不会正确解析。但解释了我想要做什么。
我做了一些挖掘并尝试替换最后一行
#!/usr/python3
import os
import subprocess
sometext = 'Hello World'
subprocess.call('echo {sometext}')
这会吐出以下错误;
Shell % python3 pingtest.py
Traceback (most recent call last):
File "pingtest.py", line 12, in <module>
subprocess.call('echo {sometext}')
File "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.8/lib/python3.8/subprocess.py", line 340, in call
with Popen(*popenargs, **kwargs) as p:
File "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.8/lib/python3.8/subprocess.py", line 854, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.8/lib/python3.8/subprocess.py", line 1702, in _execute_child
raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'echo {sometext}'
【问题讨论】:
-
一个不明显的复杂情况是,如果没有
shell=True,Python 将寻找一个名称为'echo {sometext}'的可执行文件。如果你真的需要shell=True,添加它;但对于大多数任务,你probably want to avoid it if you can.
标签: python python-3.x bash parsing subprocess