Τα πάντα για την Python

...του ubuntu και έργων ΕΛ/ΛΑΚ (Έργα-Οδηγοί-Προτάσεις)

Συντονιστής: konnn

Re: Τα πάντα για την Python

Δημοσίευσηαπό Ilias95 » 08 Ιαν 2012, 16:33

τι στοίχιση είναι αυτή πάλι; :P
ελπίζω ότι είναι έτσι:
Κώδικας: Επιλογή όλων
p2 = subprocess.Popen([ENCFS, "--extpass", extpass, enfolderdir, folderdir], stdout=subprocess.PIPE)
while p2 is None:
time.sleep(1)
if p2.poll() == 0:
print("ok!")
else:
print("failure")

1. Η Popen κάνει αυτό που θέλεις να κάνεις τελικά;
2. Δες τι σου επιστρέφει η poll: "print p2.poll()"
3.
clepto έγραψε:
πάω για διάβασμα, αυτή η έκθεση με σκοτώνει κάθε φορά :thumbdown:

:lol: :P
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

Re: Τα πάντα για την Python

Δημοσίευσηαπό medigeek » 08 Ιαν 2012, 17:07

έγραψε: import time
while p2 is None:
time.sleep(1) # Ή αντικαθιστάς με ότι άλλο θέλεις να γίνει εκείνη την στιγμή.


Υπάρχει και .wait(): http://docs.python.org/library/subproce ... Popen.wait (αν και δεν κατάφερα να το κάνω να δουλέψει)
..και check_output: http://docs.python.org/library/subproce ... -backquote

Κώδικας: Επιλογή όλων
x = subprocess.check_output(["echo", "Hello World!"])
print(x)
Κύπριος; Κόπιασε στο ubuntu-cy! ┃ Launchpad Debian Github
Οδηγός για νεοεισερχόμενους -- Αρχικές οδηγίες για αρχάριους χρήστες του Ubuntu

1 Γνώσεις Linux: Πολύ καλό ┃ Προγραμματισμού: Πολύ καλό ┃ Αγγλικών: Πολύ καλό
2 Ubuntu 12.10 quantal 3.5.0-21-generic 64bit (en_US.UTF-8, GNOME cinnamon2d), Ubuntu 3.5.0-19-generic, Windows 7
3 Intel Core2 Duo CPU E6550 2.33GHz ‖ RAM 5970 MiB ‖ MSI MS-7235
4 nVidia G73 [GeForce 7300 GT] [10de:0393] {nvidia}
5 eth0: Realtek RTL-8110SC/8169SC Gigabit Ethernet [10ec:8167] (rev 10)
Άβαταρ μέλους
medigeek
Freedom
Freedom
 
Δημοσιεύσεις: 5023
Εγγραφή: 24 Μάιος 2008, 14:49
Τοποθεσία: Σερβία/Κύπρος
Launchpad: medigeek
IRC: savvas
Εκτύπωση

Re: Τα πάντα για την Python

Δημοσίευσηαπό Ilias95 » 08 Ιαν 2012, 17:29

medigeek έγραψε:Υπάρχει και .wait(): http://docs.python.org/library/subproce ... Popen.wait (αν και δεν κατάφερα να το κάνω να δουλέψει)

Σωστά. Ο τρόπος που έδειξα παραπάνω βολεύει για όταν θες να κάνεις άλλα πράγματα ενώ η διεργασία εκτελείται.

Τι δοκίμασες και δεν δούλεψε; Αυτό πχ δουλεύει μια χαρά:
Κώδικας: Επιλογή όλων
sb = subprocess.Popen(['sleep', '3'])
sb.wait()
print 'end'
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

Re: Τα πάντα για την Python

Δημοσίευσηαπό medigeek » 08 Ιαν 2012, 17:57

Κώδικας: Επιλογή όλων

import subprocess
x = subprocess.Popen(["/bin/ls", "-lR", "/home/savvas"], stdout=subprocess.PIPE)
x.wait()

Δεν επιστρέφει τίποτα, κολλάει εκεί για πολλή ώρα (το άφησα 10 λεπτά). Χωρίς το stdout=subprocess.PIPE δουλεύει, αλλά εμφανίζει το output.
Με το check_output τέλειωσε σχεδόν αμέσως. :?

Βρήκα κι άλλο, το .communicate() το οποίο φαίνεται να δουλεύει μια χαρά:
Κώδικας: Επιλογή όλων
import subprocess
x = subprocess.Popen(["/bin/ls", "-lR", "/home/savvas"], stdout=subprocess.PIPE)
z = x.communicate()
#print(z[0]) # Output
Κύπριος; Κόπιασε στο ubuntu-cy! ┃ Launchpad Debian Github
Οδηγός για νεοεισερχόμενους -- Αρχικές οδηγίες για αρχάριους χρήστες του Ubuntu

1 Γνώσεις Linux: Πολύ καλό ┃ Προγραμματισμού: Πολύ καλό ┃ Αγγλικών: Πολύ καλό
2 Ubuntu 12.10 quantal 3.5.0-21-generic 64bit (en_US.UTF-8, GNOME cinnamon2d), Ubuntu 3.5.0-19-generic, Windows 7
3 Intel Core2 Duo CPU E6550 2.33GHz ‖ RAM 5970 MiB ‖ MSI MS-7235
4 nVidia G73 [GeForce 7300 GT] [10de:0393] {nvidia}
5 eth0: Realtek RTL-8110SC/8169SC Gigabit Ethernet [10ec:8167] (rev 10)
Άβαταρ μέλους
medigeek
Freedom
Freedom
 
Δημοσιεύσεις: 5023
Εγγραφή: 24 Μάιος 2008, 14:49
Τοποθεσία: Σερβία/Κύπρος
Launchpad: medigeek
IRC: savvas
Εκτύπωση

Re: Τα πάντα για την Python

Δημοσίευσηαπό clepto » 08 Ιαν 2012, 18:06

το communicate το είχα βρει και εγώ αλλά δεν ήξερα πως ακριβώς να το χρησιμοποιήσω...
το #print(z[0]) # Output τι είναι;
1 Γνώσεις Linux: Ικανοποιητικό ┃ Προγραμματισμού: Ικανοποιητικό ┃ Αγγλικών: Ικανοποιητικό
2 Ubuntu 13.04 raring 3.8.0-30-generic 64bit (en_US.UTF-8, Unity ubuntu), Ubuntu 3.8.0-19-generic, Windows 7
3 Intel Core i7-3537U CPU @ 2.00GHz ‖ RAM 3840 MiB ‖ ASUS K56CB
4 Intel 3rd Gen Core processor Graphics Controller [8086:0166] {i915}
5 wlan0: Atheros Inc. AR9485 Wireless Network Adapter [168c:0032] (rev 01) ⋮ eth0: Realtek RTL8111/8168 PCI Express Gigabit Ethernet controller [10ec:8168] (rev 0a)
clepto
antiwinTUX
antiwinTUX
 
Δημοσιεύσεις: 4102
Εγγραφή: 07 Ιαν 2010, 16:27
Τοποθεσία: Πάτρα
Launchpad: christriant
IRC: Clepto
Εκτύπωση

Re: Τα πάντα για την Python

Δημοσίευσηαπό Ilias95 » 08 Ιαν 2012, 18:18

medigeek έγραψε:Δεν επιστρέφει τίποτα, κολλάει εκεί για πολλή ώρα (το άφησα 10 λεπτά). Χωρίς το stdout=subprocess.PIPE δουλεύει, αλλά εμφανίζει το output.

Ναι, το λέει στο warning στο link που έδωσες παραπάνω.
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

Re: Τα πάντα για την Python

Δημοσίευσηαπό clepto » 08 Ιαν 2012, 21:49

@Ηλία, αν βάλω print p2.poll() επιστρέφει None
1 Γνώσεις Linux: Ικανοποιητικό ┃ Προγραμματισμού: Ικανοποιητικό ┃ Αγγλικών: Ικανοποιητικό
2 Ubuntu 13.04 raring 3.8.0-30-generic 64bit (en_US.UTF-8, Unity ubuntu), Ubuntu 3.8.0-19-generic, Windows 7
3 Intel Core i7-3537U CPU @ 2.00GHz ‖ RAM 3840 MiB ‖ ASUS K56CB
4 Intel 3rd Gen Core processor Graphics Controller [8086:0166] {i915}
5 wlan0: Atheros Inc. AR9485 Wireless Network Adapter [168c:0032] (rev 01) ⋮ eth0: Realtek RTL8111/8168 PCI Express Gigabit Ethernet controller [10ec:8168] (rev 0a)
clepto
antiwinTUX
antiwinTUX
 
Δημοσιεύσεις: 4102
Εγγραφή: 07 Ιαν 2010, 16:27
Τοποθεσία: Πάτρα
Launchpad: christriant
IRC: Clepto
Εκτύπωση

Re: Τα πάντα για την Python

Δημοσίευσηαπό Ilias95 » 08 Ιαν 2012, 22:02

clepto έγραψε:while p2 is None:
time.sleep(1)

Προφανώς το έβαλες πριν το:
Κώδικας: Επιλογή όλων
while p2 is None:
time.sleep(1)

:)
Εμείς θέλουμε να δούμε τι επιστρέφει αφού ολοκληρωθεί η διεργασία.
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

Re: Τα πάντα για την Python

Δημοσίευσηαπό clepto » 08 Ιαν 2012, 22:06

μετά το έβαλα...
1 Γνώσεις Linux: Ικανοποιητικό ┃ Προγραμματισμού: Ικανοποιητικό ┃ Αγγλικών: Ικανοποιητικό
2 Ubuntu 13.04 raring 3.8.0-30-generic 64bit (en_US.UTF-8, Unity ubuntu), Ubuntu 3.8.0-19-generic, Windows 7
3 Intel Core i7-3537U CPU @ 2.00GHz ‖ RAM 3840 MiB ‖ ASUS K56CB
4 Intel 3rd Gen Core processor Graphics Controller [8086:0166] {i915}
5 wlan0: Atheros Inc. AR9485 Wireless Network Adapter [168c:0032] (rev 01) ⋮ eth0: Realtek RTL8111/8168 PCI Express Gigabit Ethernet controller [10ec:8168] (rev 0a)
clepto
antiwinTUX
antiwinTUX
 
Δημοσιεύσεις: 4102
Εγγραφή: 07 Ιαν 2010, 16:27
Τοποθεσία: Πάτρα
Launchpad: christriant
IRC: Clepto
Εκτύπωση

Re: Τα πάντα για την Python

Δημοσίευσηαπό Ilias95 » 08 Ιαν 2012, 22:12

clepto έγραψε:μετά το έβαλα...

μα δε γίνεται... :S είσαι σίγουρος; η poll επιστρέφει None μόνο αν δεν έχει ολοκληρωθεί η διεργασία. Απ' τη στιγμή που σταματάει το loop που ελέγχει αν είναι None δεν γίνεται να ξαναγίνει None. Παρέθεσε το παράδειγμα που δοκίμασες.
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

ΠροηγούμενηΕπόμενο

Επιστροφή στο Ανάπτυξη Λογισμικού / Αλγόριθμοι