BASH w/ Python Subprocess 中是否还有其他替代“>”的方法

Is there any other altrenative to ">" in BASH w/ Python Subprocess

我正在尝试将我的输出打印到日志文件中,我正在使用 pythonsubprocess 来做所以。但是当我在代码中使用 > 时,出现如下错误:

+ klm.py scan /home '>' /home/userA/out/home_03-30-2022_11-07-32.log

2022-03-30 09:09:21,074 ERROR > does not exist

这是我的代码 运行:

subprocess.run(['sudo', 'docker', 'run', '-it', '--rm', '-w', '/workdir', '-v', f'{pwd}:/workdir:ro', 'docker-local.abc.xyz.xyz.name.com/klm', 'klm.py', 'scan', f"{pwd}", ">", f'/home/userA/out{directory}_{date_time}.log'])

每当我直接在终端中使用命令本身时,命令正常工作,没有任何错误并创建 .log 文件,我认为这是来自子进程或 python 端的错误。

> directory variable is a for loop of list elements -> DIRECTORIES = [/home, /root, etc]

> datetime just a string -> date_time 

> pwd is -> pwd = os.getcwd()

> I don't know if it is useful info but I am using Kali Linux for this

我想在更简单的命令上显示标准输出重定向。它将日期和时间打印到文件中。首先使用 shell 的重定向,然后不使用 shell 的帮助(shell=False 是默认值)

import subprocess

# with shell redirection
subprocess.run(['date >out1.txt'], shell=True)

# without shell
with open('out2.txt', 'w') as out:
    subprocess.run(['date'], stdout=out)

注意:文档要求您在使用 shell=True 之前阅读 Security Considerations