我是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]);
它没有编译......
我确定这是一个非常新手的问题......
答案 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"]);
您也不需要先打开文件。