如何通过 python 的重定向调用命令
how to call a command with redirection from python
我可以(在 fxce4-terminal 中)使用类似的东西成功挂载:
sshfs -o password_stdin user@example.ddnss.de:/remote/path ~/example_local_path/ <<< 'password'
但不是(在 python3-终端或 python3-脚本中):
import os
os.system("sshfs -o password_stdin user@example.ddnss.de:/remote/path ~/example_local_path/ <<< 'password'")
后者return一个Syntax error: redirection unexpected
为什么从 python 调用时命令失败,而它在终端上运行?请帮忙!
您尝试使用的此处字符串语法是 Bash 特定的; os.system()
运行 sh
.
无论如何,您最好还是使用 subprocess
,正如 os.system()
文档所建议的那样。
import subprocess
subprocess.check_call(
["sshfs", "-o", "password_stdin",
"user@example.ddnss.de:/remote/path",
"~/example_local_path/"],
input='password', text=True)
将命令拆分为一个标记列表可以消除对 shell=True
的需要,而您通常希望避免使用 尤其是 如果您对 shell。另见 Actual meaning of shell=True
in subprocess
我可以(在 fxce4-terminal 中)使用类似的东西成功挂载:
sshfs -o password_stdin user@example.ddnss.de:/remote/path ~/example_local_path/ <<< 'password'
但不是(在 python3-终端或 python3-脚本中):
import os
os.system("sshfs -o password_stdin user@example.ddnss.de:/remote/path ~/example_local_path/ <<< 'password'")
后者return一个Syntax error: redirection unexpected
为什么从 python 调用时命令失败,而它在终端上运行?请帮忙!
您尝试使用的此处字符串语法是 Bash 特定的; os.system()
运行 sh
.
无论如何,您最好还是使用 subprocess
,正如 os.system()
文档所建议的那样。
import subprocess
subprocess.check_call(
["sshfs", "-o", "password_stdin",
"user@example.ddnss.de:/remote/path",
"~/example_local_path/"],
input='password', text=True)
将命令拆分为一个标记列表可以消除对 shell=True
的需要,而您通常希望避免使用 尤其是 如果您对 shell。另见 Actual meaning of shell=True
in subprocess