如何调用需要来自python的args的perl脚本

时间:2015-06-03 15:44:37

标签: python perl

我是python的新手...... 我在python中编写脚本,我想从中调用perl脚本

这是我要拨打的电话

perl conv_intel_hex_2_verilog.pl arg1 arg2

虽然arg1是python脚本的输入,而arg2是新文件 我正在创造

到目前为止,我有这个

def main(argv):
    file  = open("test.hex","w") 
    input = argv[0];
    subprocess.call(["perl", "conv_intel_hex_2_verilog.pl", input]);
    file.close();

此次运行并且不执行任何操作

当我改变

subprocess.call(["perl", "conv_intel_hex_2_verilog.pl", input]);

subprocess.call(["perl", "conv_intel_hex_2_verilog.pl", input ,file]);

它没有编译......

我确定这是一个非常新手的问题......

2 个答案:

答案 0 :(得分:4)

正如您所描述的那样,您正在运行的程序希望其第二个参数是文件的名称,因此您需要提供它。在您当前的代码中,您给它一个Python文件对象,它与文件的字符串名称不同。

subprocess.call(["perl", "conv_intel_hex_2_verilog.pl", input, "test.hex"]);

在运行该代码之前,无需创建文件对象。另一个程序肯定会为你创建它,如果它发现文件已经存在,甚至可能会犹豫不决。

答案 1 :(得分:3)

你不能只给它一个文件句柄(或者在Python中调用的任何东西)。您正在构建对另一个程序的调用,并且该程序需要一个文件名,因此将文件名作为字符串传递。

subprocess.call(["perl", "conv_intel_hex_2_verilog.pl", input ,"test.hex"]);

您也不需要先打开文件。