将值传递给 stdin 子进程

Pass value to stdin subprocess

我正在尝试在子进程库中复制此命令。

kubectl patch secret foo --type=json --patch-file=/dev/stdin <<-EOF
  [
    {
      "op": "replace",
      "path": "/data/metadata/name",
      "value": "bar"
    }
  ]
EOF

如何通过标准输入传递以下值?

<<-EOF
  [
    {
      "op": "replace",
      "path": "/data/metadata/name",
      "value": "bar"
    }
  ]
EOF

最终使用类似于以下内容的方式工作:

def patch_secret(self, session):
     cmd = f'patch secret {self.secret_name} --namespace {self.namespace}' \
           f' --type=json --patch-file=/dev/stdin'

data="[{"op": "replace", "path": "/data/foo", "value": "TklFLXhmVnhsRHY4dnZMUEx0WXpJQ0M2bHl4Q1c4cElFdHpxeWFQN1VJTGs="}]"

r = subprocess.run(commands, input=data, env=envs, capture_output=True, universal_newlines=True, **kwargs)