将Python数组提供给Perl脚本

时间:2016-06-02 13:38:45

标签: python perl

所以我正在为我公司的工作流程开发自动化脚本。我用Python编写了全部内容,因为我们的大多数数据库API都是用Python编写的。但是,我们的一个数据库使用Perl作为其API。显然,如果不是几个月,将他们优秀的API移植到python中需要数周时间。所以,我认为这可能是一个简单的问题,如何从我的Python脚本的主函数中获取数组,将其作为输入提供给我的Perl脚本,然后将修改后的版本返回到我的主Python脚本中?

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:6)

我使用三个脚本创建了一个示例。

第一个是创建列表的Python脚本,然后将其写入JSON文件。然后我们有一个读取JSON的Perl脚本,修改它(向数组添加三个元素),然后将其写回JSON数据文件。 Python中的最后一个脚本显示了如何读取JSON并使用数据。

Python脚本,创建一个列表,将其写入json文件

import json

data = [1, 2, 3]

with open('data.json', 'w') as jsonfile:
    json.dump(data, jsonfile)

现在,数据文件如下所示:

[1, 2, 3]

Perl脚本,读取JSON文件,粘贴数据,将其写回:

use warnings;
use strict;

use JSON;

my $file = 'data.json';

# read in json from Python

my $json;

{
    local $/;
    open my $fh, '<', $file or die $!;
    $json = <$fh>;
    close $fh;
}

my $array = decode_json $json;

# modify the list (array)

push @$array, (4, 5, 6);

# re-encode the changed data, write it back to a json file

$json = encode_json $array;
open my $fh, '>', $file or die $!;
print $fh $json;
close $fh or die $!;

数据文件现在看起来像:

[1, 2, 3, 4, 5, 6]

Python脚本,读取更新的JSON文件,并将其转换回列表:

import json

file = 'data.json';
data = json.loads(open(file).read())

print(data)

打印:

[1, 2, 3, 4, 5, 6]
相关问题