gpt4 book ai didi

python - 如何在Python中访问批处理脚本变量?

转载 作者:太空宇宙 更新时间:2023-11-03 21:06:32 25 4
gpt4 key购买 nike

我有一个 bat 文件,它为变量设置值,我需要在 python 脚本中使用这些变量。

env.bat:

SET USERNAME=username
SET PASSWORD=password

我需要在 python 脚本中使用上述变量。我已尝试以下操作,但输出为 None

登录.py

import os
import subprocess
subprocess.call(['env.bat'])
print(os.getenv('USERNAME'))

您能帮我解决我的错误吗?或者有其他方法可以实现这一目标吗?

提前致谢。

最佳答案

import os
import subprocess
p = subprocess.Popen(['cmd', '/v:on', '/q', '/c', 'env.bat', '&echo(!USERNAME!&echo(!PASSWORD!'], stdout=subprocess.PIPE, universal_newlines=True)
stdout, stderr = p.communicate()
username, password = stdout.splitlines()
print(username)
print(password)

由于env.bat不使用setlocal,环境变量运行 env.bat 后,将在 cmd 的同一进程中可用。这允许将 !USERNAME!!PASSWORD! 的值回显到标准输出流。

cmd的选项:

  • /v:on 启用延迟扩展。
  • /q 设置回显关闭。
  • /c 运行以下命令字符串。

注意:

  • Python 2Python 3中进行测试。 Python 2 缺少对上下文管理器带有 subprocess,因此未使用 with 语句。

  • USERNAME 环境变量是一个内置名称。如果没有充分的理由进行更改可能会产生意想不到的问题。

  • 由于启用了延迟扩展,在 env.bat 中使用 ! 可能需要进行转义,否则 cmd 解析文件时可能会省略 !。在命令行中call echo可以避免启用延迟如果需要的话进行扩展。

关于python - 如何在Python中访问批处理脚本变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55358878/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com