OneDreamCloser Δημοσ. 15 Σεπτεμβρίου 2009 Δημοσ. 15 Σεπτεμβρίου 2009 γεια χαρα σε ολους, λοιπον, εχω ενα unix script με τη βοηθεια του οποιου καλω διαφορους κωδικες που θελω, οταν θελω να καλεσω ομως ενα python script ( που υπολογιζει και θελω να επιστρεφει μια list, το μεγεθος της οποιας δε γνωριζω προκαταβολικα ) θελω να επιστρεφω το αποτελεσμα του σε ενα array στο unix script καμια ιδεα για το πως μπορω να το κανω αυτο ? thanx
C6WGMN Δημοσ. 15 Σεπτεμβρίου 2009 Δημοσ. 15 Σεπτεμβρίου 2009 Δεν υπάρχει unix script. Υπάρχει το πρόγραμμα bash που παίρνει τον κώδικα σου και τον εκτελεί, όμως υπάρχουνε και αλλα όπως πχ ksh, csh, zsh, όπου εκεί ο κώδικας ίσος να είναι αρκετά διαφορετικός στην μορφή του. Όπως και να έχει, το πρόγραμμα στην python μπορεί να γραφει τα αποτελέσματα τις λίστας στην κονσόλα (standard output για να χρησιμοποιήσω λίγη ορολογία), και μετά μπορείς να γράψεις από bash: > for x in $( arxeio.py arg1 arg2 ); echo x: $x; done Όπου θα εκτελέσει το arxeio.py με arguments arg1, arg2, θα διαβάσει την έξοδο του προγράμματος (δηλαδή την λίστα που έγραψες), και ένα ένα θα σου δώσει τα στοιχεια τις λίστας.
parsifal Δημοσ. 15 Σεπτεμβρίου 2009 Δημοσ. 15 Σεπτεμβρίου 2009 Αν εννοείς μέσω του exit code που επιστρέφεται στο περιβάλλον κλήσης, όχι, δε γίνεται. Μόνο ένας ακέραιος μπορεί να αποθηκευθεί εκεί, όχι ολόκληρη λίστα ή άλλη δομή δεδομένων. Θα πρέπει να γίνει ανταλλαγή δεδομένων με κάποιον άλλον τρόπο. Π.χ.: 1. Μέσω του stdout που πρότεινε ο φίλος 2. Μέσω named pipe, έχοντας καλέσει πιο πριν το πρόγραμμα python και βάζοντάς το να τρέχει στο υπόβαθρο 3. Γράφοντας από το python prog σου ένα αρχείο με τα δεδομένα που θέλεις (μπορεί να γραφτεί στο /dev/shm για μεγαλύτερη ταχύτητα) διαβάζοντάς το τη στιγμή ακριβώς που θέλεις από το shell script
OneDreamCloser Δημοσ. 15 Σεπτεμβρίου 2009 Μέλος Δημοσ. 15 Σεπτεμβρίου 2009 ok παιδια σας ευχαριστω πολυ, το εκανα να δουλεψει με αρχεια, 2η μερα που γραφω Python οποτε και επελεξα την ευκολη λυση thanx
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.