python - 无法使用 python 脚本从 powershell 命令获取输出
问题描述
我有一个带有 OutFile 的 powershell 命令。当我直接从 powershell 控制台运行时,它工作得很好。它在文本文件中捕获输出。但是当我尝试使用 python 脚本运行相同的命令时,它没有给出任何错误,但它正在生成一个空文本文件。我能得到这个问题的解决方案吗?我正在使用子流程方法。
代码是这样的:
import subprocess,;
process=subprocess.run(["powershell", "-ExecutionPolicy", "Unrestricted", "<Powershell command> | Out-File C:\PythonScripts\out.txt"],stdout=subprocess.PIPE, text=True);
print(process.stdout)
解决方案
如果你想捕捉stdout
,你必须写一些东西来stdout
。管道Tee-Object
将同时写入stdout
和文件:
import subprocess
process=subprocess.run(["powershell", "-ExecutionPolicy", "Bypass", r"'Hello World!' | Tee-Object -FilePath C:\PythonScripts\out.txt"],stdout=subprocess.PIPE);
print(process.stdout)
输出:
b'Hello World!\r\n'
还有一个包含“Hello World!”的文件。
如果您不需要该文件,只需写入stdout
:
import subprocess
process=subprocess.run(["powershell", "-ExecutionPolicy", "Bypass", r"'Hello World!'"],stdout=subprocess.PIPE);
print(process.stdout)
输出:
b'Hello World!\r\n'
推荐阅读
- c - 从 APC 调用 LdrLoadDll 会导致访问冲突
- c++ - 如何将文件中的 UTF-8 文本转换为可以迭代的容器,并检查每个符号在 C++ 中是否为字母数字?
- sql-server - 选择取决于日期 VB.NET 和 SQL Server
- javascript - 在 PHP 和 Javascript 之间传递数组数据是未定义的
- python - 异常必须从 BaseException 派生
- reactjs - React Native 数学运算无法正常工作
- apache-spark-sql - 在 UNION 查询中执行 DISTRIBUTE BY 时是否需要子查询?
- java - Maven 项目无法从 Azure Artifacts 下载工件
- javascript - 如何在 Redux `matchDispatchToProps` 函数中访问组件表单数据?
- string - 如何在 POSIX 系统上将 OsString 转换为 u16?