如何通过 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