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

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

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

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

Δημοσίευσηαπό medigeek » 22 Ιουν 2012, 21:58

Ilias95, είχες δίκιο, ήταν το readline().
Εφτιαξα μια δική μου έκδοση του readline διαβάζοντας ένα-ένα χαρακτήρα με το read(1).

Ορίστε:
Μορφοποιημένος Κώδικας: Επιλογή όλων
import subprocess
import sys
import re
import datetime

child = subprocess.Popen("ffmpeg -i test.mp3 test2.mp3", shell=True, stderr=subprocess.PIPE, stdout=subprocess.PIPE)
complete = False
myline = ''
while True:
out = child.stderr.read(1)
if out == '' and child.poll() != None:
break
#create myline string
myline += out
if out in ('\r','\n'):
#print(myline)
# Duration / start
m = re.search("Duration: ([0-9:.]+), start: ([0-9.]+)", myline)
if m:
# duration in hh:mm:ss format
m_duration = m.group(1)
# start (in seconds?)
m_start = m.group(2)
print("Duration: {0}, start: {1}".format(m_duration, m_start))
n = re.search("time=([0-9.]+)", myline)
if n:
n_tpassed = float(n.group(1))
n_dt = datetime.timedelta(seconds=n_tpassed)
print("time processed: {0} out of {1}".format(n_dt, m_duration))
# Calculate time left:
tformat = '%H:%M:%S.%f'
tdelta = datetime.datetime.strptime(m_duration, tformat) - datetime.timedelta(seconds=n_tpassed)
# Sometimes ffmpeg shows more time processed than the end time. It reverts the date to 1899 and shows a ValueError.
if tdelta.year != 1899:
# The datetime module calculates according to date and time. date is set as 1900-01-01 and we don't need that.
print("Time left to process: {0}".format(tdelta.strftime("%H:%M:%S")))
#reset myline
myline = ''


Από καιρό ήθελα να παίξω με το datetime, αφορμή να μάθω πώς λειτουργεί. :)

Δεν λαμβάνει υπόψη το start second όταν υπολογίζει το χρόνο που έμεινε.
Κύπριος; Κόπιασε στο 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 » 23 Ιουν 2012, 00:05

Είσαι ωραίος Σάββα, σε ευχαριστώ πολύ!!! :bow:

Με είχε σκάσει το συγκεκριμένο.
Δεν πρόλαβα να διαβάσω τον κώδικα ακόμα, αλλά λειτουργεί άψογα! :clap:

Ερώτηση: Το datetime εκτός από φορμαρισμένη έξοδο προσφέρει κάτι περισσότερο;
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

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

Δημοσίευσηαπό evolgen » 23 Ιουν 2012, 02:18

Καλησπέρα! Έκατσα που λέτε και έγραψα όλο τον κύριο κώδικα μιας εφαρμογής για το διαγωνισμό σε Perl και πάω να την κάνω να λειτουργεί ως indicator. Ανακαλύπτω πως δεν υπάρχουν Perl bindings για Indicators ακόμα(?). Είναι εφικτό ο indicator να είναι γραμμένος σε Python και με το που κάνω κλικ να εκτελείται ο κώδικας της Perl;
Το να μειώνεις ένα έργο ελεύθερου λογισμικού, επειδή θεωρείς το δικό σου καλύτερο,
είναι απαράδεκτη συμπεριφορά και δε συμβαδίζει με τις αρχές του ελεύθερου λογισμικού.

Γνώσεις Linux: Μέτριο++ ┃ Προγραμματισμός: Perl, R, Python, SQL, C, Common Lisp, BashΑγγλικά: Άριστα

1. Ubuntu 14.04 trusty
2. Intel Core i7-3520M CPU @ 2.90GHz ‖ RAM 7892 MiB
3. Intel 3rd Gen Core processor Graphics Controller [8086:0166] {i915}
4. eth0: Broadcom NetXtreme BCM57765 Gigabit Ethernet PCIe [14e4:16b4] (rev 10) ⋮ eth1: Broadcom BCM4331 802.11a/b/g/n [14e4:4331] (rev 02)
Άβαταρ μέλους
evolgen
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 1031
Εγγραφή: 28 Ιούλ 2010, 14:22
Τοποθεσία: UK
IRC: bioevolgenec
Εκτύπωση

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

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

Ilias95 έγραψε:
Ερώτηση: Το datetime εκτός από φορμαρισμένη έξοδο προσφέρει κάτι περισσότερο;

Ναι, με το datetime.datetime.strptime() μπορείς να εισάγεις χρόνο:
Κώδικας: Επιλογή όλων
>>> import datetime
>>> x = datetime.datetime.strptime("10-12-2001 05:03", "%d-%m-%Y %H:%M")
>>> x
datetime.datetime(2001, 12, 10, 5, 3)

με το timedelta μπορείς να προσθαφαιρείς χρόνο (και ημερομηνίες), π.χ.
Κώδικας: Επιλογή όλων
>>> datetime.datetime.now() - datetime.timedelta(days=1)
datetime.datetime(2012, 6, 22, 7, 8, 13, 352151)
>>> x - datetime.timedelta(days=1)
datetime.datetime(2001, 12, 9, 5, 3)
Κύπριος; Κόπιασε στο 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

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

evolgen έγραψε:Είναι εφικτό ο indicator να είναι γραμμένος σε Python και με το που κάνω κλικ να εκτελείται ο κώδικας της Perl;

Δεν έχω ιδέα από indicators, αλλά με το subprocess μπορείς να εκτελέσεις μια εντολή:
http://docs.python.org/library/subproce ... ess-module
Κώδικας: Επιλογή όλων

import subprocess
subprocess.call("perl myprogram.pl", shell=True)
Κύπριος; Κόπιασε στο 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

Δημοσίευσηαπό pmav99 » 24 Ιουν 2012, 13:53

evolgen έγραψε:Καλησπέρα! Έκατσα που λέτε και έγραψα όλο τον κύριο κώδικα μιας εφαρμογής για το διαγωνισμό σε Perl και πάω να την κάνω να λειτουργεί ως indicator. Ανακαλύπτω πως δεν υπάρχουν Perl bindings για Indicators ακόμα(?). Είναι εφικτό ο indicator να είναι γραμμένος σε Python και με το που κάνω κλικ να εκτελείται ο κώδικας της Perl;

Εξαρτάται από το τι κάνει το πρόγραμα σου. Θα μπορούσες να γράψεις σε Python ένα wrapper του προγράμματος της Perl. Αλλά ανάλογα με το τι είναι και ο τι κάνει, μπορεί να μην είναι απλό. Γιατί δεν το γράφεις κατευθειαν σε python ? :P :angel:

ps. Άσχετο με το ερώτημα, αλλά ίσως να σε ενδιαφέρει να τσεκάρεις και αυτή τη βιβλιοθήκη http://dirac.cnrs-orleans.fr/MMTK/
pmav99
seniorTUX
seniorTUX
 
Δημοσιεύσεις: 574
Εγγραφή: 05 Ιούλ 2008, 14:29
Εκτύπωση

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

Δημοσίευσηαπό evolgen » 24 Ιουν 2012, 14:57

Καλησπέρα και πάλι! Τελικά ήταν αρκετά απλό να γράψω τον indicator σε Python και το κύριο κομμάτι σε Perl. Ευχαριστώ @medigeek για το subprocess.call!

Off topic:
Ο λόγος που προτιμώ την Perl -πέρα από τα διάφορα χαρακτηριστικά της για τα οποία αξίζει μεγάλη συζήτηση- είναι γιατί έχω ασχοληθεί μαζί της πάνω από ένα χρόνο σε αρκετά μεγάλο project, οπότε την ξέρω αρκετά καλά.
Σε Python... ας πούμε ότι το πρώτο script που έγραψα ποτέ ήταν αυτός ο indicator. :P

Όσο για το MMTK, είμαι τελείως άσχετος όσον αφορά προσομοιώσεις, αλλά θα το κοιτάξω! Thanks!
Το να μειώνεις ένα έργο ελεύθερου λογισμικού, επειδή θεωρείς το δικό σου καλύτερο,
είναι απαράδεκτη συμπεριφορά και δε συμβαδίζει με τις αρχές του ελεύθερου λογισμικού.

Γνώσεις Linux: Μέτριο++ ┃ Προγραμματισμός: Perl, R, Python, SQL, C, Common Lisp, BashΑγγλικά: Άριστα

1. Ubuntu 14.04 trusty
2. Intel Core i7-3520M CPU @ 2.90GHz ‖ RAM 7892 MiB
3. Intel 3rd Gen Core processor Graphics Controller [8086:0166] {i915}
4. eth0: Broadcom NetXtreme BCM57765 Gigabit Ethernet PCIe [14e4:16b4] (rev 10) ⋮ eth1: Broadcom BCM4331 802.11a/b/g/n [14e4:4331] (rev 02)
Άβαταρ μέλους
evolgen
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 1031
Εγγραφή: 28 Ιούλ 2010, 14:22
Τοποθεσία: UK
IRC: bioevolgenec
Εκτύπωση

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

Δημοσίευσηαπό pmav99 » 24 Ιουν 2012, 18:27

Off topic:
Με Perl έχω ασχοληθεί πολύ λίγο. Η αίσθηση μου είναι η εξης. Όσον αφορά δυνατότητες, perl και python νομίζω ότι είναι αντίστοιχες. Αλλού μπορεί να είναι λίγο καλύτερη η μία, αλλού η άλλη. Αλλά σε γενικές γραμμές μια από τα ίδια πρέπει να είναι. Όσον αφορά βιβλιοθήκες δεν έχω ασχοληθεί αρκετά με perl για να μιλήσω. Νομίζω ότι στην python πλέον βρίσκεις πιο πολλά πράγματα. Εκεί που σαφώς υπερτερεί η Python είναι στη δυναμική. Πολύς περισσότερος κόσμος ασχολείται με Python παρά με Perl. Επίσης υπάρχει κόσμος που μετατοπίζεται από την Perl προς την Python αλλά σπάνια το αντίθετο.

ps. Το ΜΜΤΚ δεν το ξέρω. Στο ανέφερα απλά επειδή είναι του κλάδου σου. Υπάρχει και αυτό. Με μια αναζήτηση θα βρεις διάφορα σχετικά.
pmav99
seniorTUX
seniorTUX
 
Δημοσιεύσεις: 574
Εγγραφή: 05 Ιούλ 2008, 14:29
Εκτύπωση

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

Δημοσίευσηαπό clepto » 25 Ιουν 2012, 23:20

για να χρησιμοποιήσω το rarfile πρέπει να το εγκαταστήσω ξεχωριστά; δεν είναι το ίδιο με το zipfile που έρχεται μαζί με την python από ότι καταλαβαίνω έτσι;
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 » 26 Ιουν 2012, 00:06

clepto έγραψε:για να χρησιμοποιήσω το rarfile πρέπει να το εγκαταστήσω ξεχωριστά; δεν είναι το ίδιο με το zipfile που έρχεται μαζί με την python από ότι καταλαβαίνω έτσι;

Ναι, δεν περιέχεται στην standard library: http://docs.python.org/library/archiving.html
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

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

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