2016-06-02 13 views
5

Şirketimdeki bir iş akışı için bir otomasyon komut dosyası üzerinde çalışıyorum. Python'daki tüm veri tabanlarını API'mizin Python'da olduğu gibi yazdım. Bununla birlikte, veritabanlarımızdan biri API'sı için Perl kullanmaktadır. Mükemmel API'lerini python'a taşımak için aylar olmasa bile haftalar sürer. Bu yüzden, bunun muhtemelen basit bir problem olduğunu varsayalım, Python betiğimin ana işlevinden bir diziyi nasıl alabilirim, onu Perl betiğimde girdi olarak besleyebilirim, sonra değiştirilmiş sürümü ana Python betiğine geri gönderebilirim?Python dizisini Perl betiğine aktarma

Yardımlarınız için çok teşekkür ederim!

+0

da "temizleme olarak bilinen veri serileştirme (bir göz atın "): [Perl] (http://perlmaven.com/data-serialization-in-perl) ve [python] 'da (https://docs.python.org/2/library/pickle.html) –

+5

' JSON, farklı dillerdeki veri türlerini temsil edebilmek için oldukça iyi bir seçimdir. – Sobrique

+2

@machineyearning "Pickling", python'a özgü bir terimdir. – Dre

cevap

6

Üç komut dosyası kullanarak bir örnek oluşturdum.

İlki bir liste oluşturan bir Python betiğidir, daha sonra bir JSON dosyasına yazar. Daha sonra JSON'da okuyan, onu değiştiren (diziye üç tane daha eleman ekler) bir Perl betiğine sahibiz ve daha sonra JSON veri dosyasına geri yazarız. Python'daki son komut, JSON'da nasıl okunacağını ve verileri nasıl kullanacağınızı gösterir.

Python komut, bir liste oluşturmak, bir json dosyası veri dosyası artık benziyor

import json 

data = [1, 2, 3] 

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

bunu yazmak:

[1, 2, 3] 

Perl komut, ile Tepe yapabilecek JSON dosyasını okur veri, bu vazgeçme yazıyor:

:

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

veri dosyası artık benziyor

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

Python komut, güncelleştirilmiş JSON dosyasını okur ve bir liste halinde geri dönüşümleri:

import json 

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

print(data) 

Baskılar:

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

Vay teşekkür ederim! Bu tam olarak aradığım şeydi! –

+0

Oldukça hoş geldiniz! – stevieb

İlgili konular