使用带参数的Python调用外部* .exe,没有错误,但是没有输出

时间:2019-07-19 03:29:27

标签: python python-2.7 subprocess

我有* .exe程序,该程序只需简单的命令即可创建用户(以cmd格式): 我打开cmd,导航到my.exe位置,然后像这样运行它:

my.exe cu用户名密码电子邮件

cu-是my.exe用于创建用户的命令。

由于我要创建许多用户,因此我想使用python运行my.exe。

我没有收到任何错误,但是没有创建用户。我已经在cmd中手动完成了,没有问题。因为我不熟悉python的这个模块,所以我不太了解发生了什么。

我的脚本:

# import details for users from csv and write them to a list:
import csv
with open(r'C:\temp\test.csv', 'rb') as f:
    reader = csv.reader(f)
    users_list = list(reader) # list of lists

# run my.exe for each list entry, each is a list as well
import subprocess
for each in users_list:
    arguments = 'cu' +" "+ str(each[0])  +" "+ str(each[1]) +" "+ str(each[2])
    subprocess.call([r"C:\Software\ikfbatool\ikfbatool.exe", arguments])

1 个答案:

答案 0 :(得分:0)

您要将参数作为长字符串传递,这是不正确的。对于您的情况,您的列表将包含2个元素,只有.exe和一个包含参数的字符串。

  

所有命令成员都应在列表中分隔。

您应该尝试:

arguments = ['cu', str(each[0]), str(each[1]), str(each[2])]
subprocess.call([r"C:\Software\ikfbatool\ikfbatool.exe"].extend(arguments))