自动将输入发送到另一个 python 脚本

Auto-send inputs to another python script

我有一个 python 脚本,它在消失并执行某些操作之前接受 2 个用户输入。我现在需要多次 运行 脚本,两个输入中的任何一个都具有不同的值。我宁愿不必每次都重新 运行 脚本并手动输入值,因为我有超过 100 种不同的组合。 我相信这可以在 python.

中相当流畅地完成

这里有一个例子:input.py

import pandas as pd

# Variables for user input
print("Please enter your name: ")
UserInput = input()
name = str(UserInput)
print("Now enter your Job title: ")
UserInput2 = input()
job = str(UserInput2)

# Create filename with name and current date
currenttime = pd.to_datetime('today').strftime('%d%m%Y')
filename = name + '_' + currenttime + ".csv"

print('\nHi ' + name + '. ')
print('Hope your job as a ' + job + ' is going well.')
print("I've saved your inputs to " + filename)
print('Speak to you soon. Bye.')

# Create DataFrame, append inputs and save to csv
series = pd.Series({'Name ': name, 'Job Title ': job})
df = pd.DataFrame([series])
df.to_csv(filename, index=False)

下面是我尝试使用 subprocess 模块将输入自动发送到 input.py(可能不是正确的方法)。该文件成功调用 input.py,但我无法确定我需要添加哪些其他参数才能发送指定值。 使用的代码:auto.py

import subprocess
subprocess.run(['python', 'input.py'])
# These don't work
#subprocess.run(['python', 'input.py', 'Tim', 'Doctor'])
#subprocess.run(['python', 'input.py'], input=('Tim', 'Doctor'))
#subprocess.run(['python', 'input.py'], stdin=('Tim', 'Doctor'))

理想情况下,我想要一个列表,其中包含我要发送到脚本的不同输入,以便它循环并添加第二批输入,再次循环,然后是第三批,依此类推。 我不确定我是否使用了正确的子流程方法。 任何帮助将不胜感激。

在你的input.py

中使用类似这样的东西
import pandas as pd
import sys


# Variables for user input
UserInput = sys.argv[0]
name = str(UserInput)
UserInput2 = sys.argv[1]
job = str(UserInput2)

# Create filename with name and current date
currenttime = pd.to_datetime('today').strftime('%d%m%Y')
filename = name + '_' + currenttime + ".csv"

print('\nHi ' + name + '. ')
print('Hope your job as a ' + job + ' is going well.')
print("I've saved your inputs to " + filename)
print('Speak to you soon. Bye.')

# Create DataFrame, append inputs and save to csv
series = pd.Series({'Name ': name, 'Job Title ': job})
df = pd.DataFrame([series])
df.to_csv(filename, index=False)

auto.py 将是

import subprocess
subprocess.run(['python', 'input.py','Tim', 'Doctor'])

让我知道是否有帮助,我可以相应地修改您的需求。

auto.py 输出: