gpt4 book ai didi

python - 如何使脚本自动向另一个脚本提供参数而不通过命令行传递?

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

解释我的问题的最佳方法是借助示例。
考虑一个提出问题并根据问题给出答案的 Python 脚本。

QandA.py

import os,sys,re

ans = input('How you doin\' \(Say Yes\/No\)')
if (ans == "Yes"):
print("Nice to hear")
elif (ans == "No") :
print("Oh Too Bad")

上面的脚本通常会提示用户输入,但我也希望它由批处理脚本调用,该批处理脚本将为调用的 Python 脚本提供输入。我将在批处理文件本身中对这些输入进行硬编码(如下所示)。

call.bat

set ans="Yes"
D:
cd "Automate Answers"
python "QandA.py"

有没有办法实现这一点(让Python脚本知道ans)而不修改Python脚本本身来处理可选的命令行参数?我希望批处理脚本能够像用户从变量数组向脚本提供输入一样运行。

最佳答案

.bat.cmd 中设置的变量应显示为环境变量。Python 可以读取通过 os.environ 传入的环境变量

import os
print(os.environ['ans'])

因此你可以写:

import os

ans = os.environ.get('ans')
if ans is None: # it was not set, so ask user
ans = input("How you doin' (Say Yes/No)")

if ans == "Yes":
print("Nice to hear")
elif ans == "No":
print("Oh Too Bad")

甚至执行一个函数:

def env_or_input(var_name, prompt):
val = os.environ.get(var_name)
if val is None: # it was not set, so ask user
val = input(prompt)
return val

...

ans = env_or_input("ans", "How you doin' (Say Yes/No)")
if ans == "Yes":
print("Nice to hear")
elif ans == "No":
print("Oh Too Bad")

关于python - 如何使脚本自动向另一个脚本提供参数而不通过命令行传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28519076/

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