2016-06-02 14 views
5

Vì vậy, tôi đang làm việc trên một kịch bản tự động hóa cho một quy trình làm việc trong công ty của tôi. Tôi đã viết toàn bộ điều trong Python, vì hầu hết các API cơ sở dữ liệu của chúng ta đều bằng Python. Tuy nhiên, một trong các cơ sở dữ liệu của chúng tôi sử dụng Perl cho API của họ. Nó rõ ràng sẽ đưa tôi tuần nếu không phải tháng để chuyển API tuyệt vời của họ vào python. Vì vậy, và tôi cho rằng đây có lẽ là một vấn đề đơn giản, làm thế nào tôi có thể lấy một mảng từ hàm chính của kịch bản Python của tôi, đưa nó vào kịch bản Perl của tôi làm đầu vào, sau đó trả lại phiên bản đã sửa đổi vào tập lệnh Python chính của tôi?Cho một mảng Python vào một tập lệnh Perl

Cảm ơn bạn rất nhiều vì đã giúp đỡ!

+0

Hãy xem serialization dữ liệu (hay còn gọi là "tẩy "): [Trong perl] (http://perlmaven.com/data-serialization-in-perl) và [trong python] (https://docs.python.org/2/library/pickle.html) –

+5

' JSON' là một cược tốt để có thể đại diện cho các kiểu dữ liệu bằng các ngôn ngữ khác nhau. – Sobrique

+2

@machineyearning "Pickling" là một thuật ngữ đặc trưng cho python. – Dre

Trả lời

6

Tôi đã tạo một ví dụ bằng ba tập lệnh.

Đầu tiên là tập lệnh Python tạo danh sách, sau đó ghi nó vào một tệp JSON. Sau đó chúng ta có một kịch bản Perl đọc trong JSON, sửa đổi nó (thêm ba phần tử nữa vào mảng), sau đó viết nó trở lại tệp dữ liệu JSON. Kịch bản lệnh cuối cùng, bằng Python, cho thấy cách đọc trong JSON và sử dụng dữ liệu.

Python kịch bản, tạo danh sách, viết nó ra vào một tập tin json

import json 

data = [1, 2, 3] 

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

Các tập tin dữ liệu bây giờ trông giống như:

[1, 2, 3] 

Perl script, đọc các tập tin JSON, mucks với dữ liệu, viết lại:

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 $!; 

Tệp dữ liệu giờ có dạng:

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

Python kịch bản, đọc các tệp JSON được cập nhật, và biến nó trở thành một danh sách:

import json 

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

print(data) 

Prints:

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

Wow cảm ơn bạn! Đây chính xác là thứ tôi đang tìm kiếm! –

+0

Bạn đang khá hoan nghênh! – stevieb

Các vấn đề liên quan