如何使用Python的子进程运行“cond list”命令并将其通过管道传输到文本文件

问题描述 投票:0回答:1

我的目标是使用 Python 的 subprocess 模块在 Anaconda 提示环境中运行以下 'conda list>[fullPath_based_on_date]' 命令:

r'conda list>z:\backup\Anaconda\conda_list_2024-05-06_13-23-45.txt'

我无法找到一种方法让子进程在 Anaconda 环境中运行该命令。 但我编写了下面的 Python 脚本,希望有人能给我一些关于如何修复它的提示,以及我可以在哪里了解我做错了什么。 这是我的 Python 脚本:

import os
import subprocess
from datetime import datetime as DTT

NL, TAB, NLT = '\n', '\t', '\n\t'# {NL}{TAB}{NLT}

DT_now_str = (f'''{(DTT.now()).strftime("%Y-%m-%d_%H-%M")}''')
DT_now_str_wSeconds = (f'''{(DTT.now()).strftime("%Y-%m-%d_%H-%M-%S")}''')
print(f'''{DT_now_str = }{NLT}'''  +
    f'''{DT_now_str_wSeconds = }''')

dst_fullPath_based_on_date = r'z:\backup\Anaconda' + os.sep + 'conda_list_' + DT_now_str_wSeconds + '.txt'
cmd_conda_list_piped2txt = r'conda list>' + dst_fullPath_based_on_date
print(f'''{NL}{cmd_conda_list_piped2txt = }''')

subprocess.run(cmd_conda_list_piped2txt)
print(f'''{NL}{exitcode = }''' +
    f'''{out = }''' +
    f'''{err = }''')

cmd_edit_conda_list = r"C:\Program Files\Notepad++\notepad++.exe" + ' ' + dst_fullPath_based_on_date
print(f'''{NL}{cmd_edit_conda_list = }''')

subprocess.run(cmd_edit_conda_list)
print(f'''{NL}{exitcode = }''' +
    f'''{out = }''' +
    f'''{err = }''')

任何关于如何让子进程模块在 Anaconda 环境中运行 'conda list>[fullPath_based_on_date]' 命令的建议将不胜感激。

谢谢你, 马克

python anaconda subprocess conda
1个回答
0
投票

要执行命令并将其输出重定向到文件,只需使用

subprocess.run
。它有所有选项。

with open(dst_fullPath_based_on_date, "w") as f:
    subprocess.run(["conda", "list"], stdout=f)

请参阅

subproces.run
subprocess.Popen
文档。

© www.soinside.com 2019 - 2024. All rights reserved.