我有这个python文件,我必须每天运行,所以我正在制作一个批处理文件,我将使用它来自动化这个过程。问题是:这个python脚本中有一个输入函数。我必须每天运行它,按"1",按"enter",就是这样。
我已经学会了
python_locationpython.exe python_script_locationtest.py
我可以运行脚本。然而,我不知道如何通过"1"。到运行上述批处理代码时触发的输入函数
我已经尝试过echo 1 | python_locationpython.exe python_script_locationtest.py
,它给了我一个'EOF'错误。
以下是一些解决方案。这个想法是写一段代码来检查它是需要从用户还是从一个集合变量中获取输入。
解决方案1:
使用命令行参数设置输入变量
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--some_var', default=None, required=False)
cli_args = parser.parse_args()
def get_input(var_name):
if auto_input := getattr(cli_args, var_name, None):
print("Auto input:", auto_input)
return auto_input
else:
return input("Manual input: ")
some_var = get_input("some_var")
print(some_var)
如果手动运行,不带参数执行
$ python3 script.py
Manual input: 1
1
如果从批处理文件运行,使用参数
执行$ python3 script.py --some_var=1
Auto input: 1
1
解决方案2
使用环境变量设置输入变量
import os
def get_input(var_name):
if auto_input := os.getenv(var_name):
print("Auto input:", auto_input)
return auto_input
else:
return input("Manual input: ")
some_var = get_input("some_var")
print(some_var)
如果手动运行,执行时不使用环境变量
$ python3 script.py
Manual input: 1
1
如果从批处理文件运行,使用环境变量
执行$ export some_var=1
$ python3 script.py
Auto input: 1
1