diff --git a/dictionaries/main.txt b/dictionaries/main.txt index d535de9c..3d4739c0 100644 --- a/dictionaries/main.txt +++ b/dictionaries/main.txt @@ -1,6 +1,8 @@ A ActiveState Actual +Adam +Alex Alias Alph Alternate @@ -24,10 +26,12 @@ Bug Built Bytearray C +Cameron Cannon Case Category Centrum +Chapman Cheese Cleese Command @@ -83,6 +87,7 @@ Get Gordon Graham Green +Greg Group Guido Hans @@ -113,6 +118,7 @@ Just Jython Korn L +Laird Letter Linux Lisp @@ -121,6 +127,7 @@ Ll Lm Lo Local +Lock Look Looking Looping @@ -138,6 +145,7 @@ Marek Matthias Message Michael +Mitch Mixin Modula Modules @@ -154,12 +162,14 @@ Number Numeric Nα O +Olsen Origin Other P Packard Pascal Path +Paul Perl Precision Print @@ -204,6 +214,7 @@ Stacks Stallman Start States +Stein Stichting Storage String @@ -226,6 +237,7 @@ U Ulf United Unix +Usenet V Van W @@ -293,6 +305,8 @@ be before below bereft +big +bignum bin binary binding @@ -387,6 +401,7 @@ conflict conflicts cong conjugate +connect consistency constructor constructors @@ -413,12 +428,14 @@ crt cubes currency current +curses d data date datetime day days +dbm de dead debug @@ -481,6 +498,7 @@ enter entry env eq +errno error errors escape @@ -531,6 +549,7 @@ formatted formatting frac framework +frameworks freeze freshfruit from @@ -568,6 +587,7 @@ gt guard guru h +hack has hash hashability @@ -760,6 +780,7 @@ mult multi must mutable +mutex my mydict myfile @@ -772,6 +793,7 @@ namespace namespaces nan native +ncurses ndim ne negative @@ -796,6 +818,7 @@ of old on one +onexit only op open @@ -818,6 +841,7 @@ package packages packing padding +pads page pages pairs @@ -827,13 +851,16 @@ parsing pass passion path +pathname pattern payload pdb pear +persistent pi pickle pip +pipe pipes place placeholder @@ -842,6 +869,7 @@ play point points pop +popen popleft population pos @@ -895,6 +923,7 @@ record reduce ref reference +regex register regressions regular @@ -932,6 +961,7 @@ seconds see seek self +sendmail sep sequence sequences @@ -956,10 +986,12 @@ singleton singletons site size +sl sleep slept slice slicing +so somedir sort sorted @@ -1037,6 +1069,7 @@ task tasks temperature templating +termcap terminal terminator terminators @@ -1058,6 +1091,8 @@ titlecase titlecased to today +token +tokens toolkits total trace @@ -1184,6 +1219,7 @@ zlib αλληλοαποκλείονται αλληλογραφίας αναδιατάξετε +αναδιατάσσει αναζητήσιμο αναθέτη αναθέτης @@ -1282,6 +1318,7 @@ zlib κατάσταση κατέληγες κατακερματιστέες +καταχωρητή κατηργημένο κεφαλίδας κεφαλίδες @@ -1299,6 +1336,7 @@ zlib μετα μεταβλητή μεταβλητών +μεταδεδομένα μεταδεδομένων μετακλάσεων μετακλάση @@ -1307,6 +1345,7 @@ zlib μεταφέρετε μεταφοράς μιμηθείτε +μιμηθώ μονοεπεξεργαστικό μπορεί να @@ -1340,12 +1379,15 @@ zlib περιβάλλουσας περιγραφέα περιγραφέας +περιγραφείς περιηγείστε περικλειόμενο περικόβει +περικόψετε πλέον πληθικότητα πολλοί +πολυεπεξεργαστές πολυεπεξεργαστικό πολυμορφική προέκδοση diff --git a/faq/library.po b/faq/library.po index 7ffd7f25..df252501 100644 --- a/faq/library.po +++ b/faq/library.po @@ -9,29 +9,30 @@ msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-02-17 21:03+0100\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: \n" +"PO-Revision-Date: 2024-02-26 09:00+0200\n" +"Last-Translator: Panagiotis Skias \n" +"Language-Team: PyGreece \n" +"Language: el\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: faq/library.rst:5 msgid "Library and Extension FAQ" -msgstr "" +msgstr "Συχνές ερωτήσεις βιβλιοθήκης και επέκτασης" #: faq/library.rst:8 msgid "Contents" -msgstr "" +msgstr "Περιεχόμενα" #: faq/library.rst:12 msgid "General Library Questions" -msgstr "" +msgstr "Γενικές Ερωτήσεις Βιβλιοθήκης" #: faq/library.rst:15 msgid "How do I find a module or application to perform task X?" msgstr "" +"Πως μπορώ να βρω ένα module ή μια εφαρμογή για να εκτελέσω την εργασία Χ;" #: faq/library.rst:17 msgid "" @@ -39,6 +40,9 @@ msgid "" "relevant standard library module. (Eventually you'll learn what's in the " "standard library and will be able to skip this step.)" msgstr "" +"Ελέγξτε την :ref:`the Library Reference ` για να δείτε αν " +"υπάρχει ένα σχετικό τυπικό module. (Τελικά θα μάθετε τι υπάρχει στην τυπική " +"βιβλιοθήκη και θα μπορείτε να παραλείψετε αυτό το βήμα.)" #: faq/library.rst:21 msgid "" @@ -47,10 +51,15 @@ msgid "" "engine. Searching for \"Python\" plus a keyword or two for your topic of " "interest will usually find something helpful." msgstr "" +"Για πακέτα τρίτων, πραγματοποιήστε αναζήτηση στο `Python Package Index " +"`_ ή δοκιμάστε στο `Google `_ ή σε " +"κάποια άλλη μηχανή αναζήτησης ιστού. Η αναζήτηση με τον όρο \"Python\" μαζί " +"με μια ή δύο λέξεις κλειδιά για το θέμα που σας ενδιαφέρει συνήθως θα βγάλει " +"κάποιο χρήσιμο αποτέλεσμα." #: faq/library.rst:28 msgid "Where is the math.py (socket.py, regex.py, etc.) source file?" -msgstr "" +msgstr "Που βρίσκεται το πηγαίο αρχείο math.py (socket.py, regex.py, κ.λπ.);" #: faq/library.rst:30 msgid "" @@ -60,35 +69,46 @@ msgid "" "file:`mathmodule.c`, somewhere in a C source directory (not on the Python " "Path)." msgstr "" +"Εάν δεν μπορείτε να βρείτε ένα πηγαίο αρχείο για ένα module, μπορεί να είναι " +"ένα ενσωματωμένο (built-in) module ή ένα module που φορτώνεται δυναμικά " +"υλοποιημένο σε C, C++ ή άλλη μεταγλωττισμένη γλώσσα. Σε αυτή την περίπτωση " +"μπορεί να μην έχετε το αρχείο προέλευσης ή μπορεί να είναι κάτι σαν :file:" +"`mathmodule.c`, κάπου σε έναν κατάλογο προέλευσης C (όχι στην διαδρομή της " +"Python)." #: faq/library.rst:35 msgid "There are (at least) three kinds of modules in Python:" -msgstr "" +msgstr "Υπάρχουν (το λιγότερο) τριών ειδών modules στην Python:" #: faq/library.rst:37 msgid "modules written in Python (.py);" -msgstr "" +msgstr "modules γραμμένα σε Python (.py):" #: faq/library.rst:38 msgid "" "modules written in C and dynamically loaded (.dll, .pyd, .so, .sl, etc);" msgstr "" +"modules γραμμένα σε C και φορτώνονται δυναμικά (.dll, .pyd, .so, .sl, κ.λπ.):" #: faq/library.rst:39 msgid "" "modules written in C and linked with the interpreter; to get a list of " "these, type::" msgstr "" +"modules γραμμένα σε C και συνδεδεμένα με τον διερμηνέα: για να λάβετε μια " +"λίστα από αυτά, πληκτρολογήστε::" #: faq/library.rst:42 msgid "" "import sys\n" "print(sys.builtin_module_names)" msgstr "" +"import sys\n" +"print(sys.builtin_module_names)" #: faq/library.rst:47 msgid "How do I make a Python script executable on Unix?" -msgstr "" +msgstr "Πως δημιουργώ ένα εκτελέσιμο Python script στο Unix;" #: faq/library.rst:49 msgid "" @@ -96,28 +116,37 @@ msgid "" "first line must begin with ``#!`` followed by the path of the Python " "interpreter." msgstr "" +"Θα πρέπει να κάνετε δύο πράγματα: η λειτουργία του script αρχείου πρέπει να " +"είναι εκτελέσιμη και η πρώτη γραμμή θα πρέπει αν ξεκινά με ``#!`` " +"ακολουθούμενη από τη διαδρομή του διερμηνέα της Python." #: faq/library.rst:53 msgid "" "The first is done by executing ``chmod +x scriptfile`` or perhaps ``chmod " "755 scriptfile``." msgstr "" +"Το πρώτο γίνεται με την εκτέλεση του ``chmod +x scriptfile`` ή ίσως ``chmod " +"755 scriptfile``." #: faq/library.rst:56 msgid "" "The second can be done in a number of ways. The most straightforward way is " "to write ::" msgstr "" +"Το δεύτερο μπορεί να γίνει με ποικίλους τρόπους. Ο πιο απλός τρόπος είναι " +"να γράψετε ::" #: faq/library.rst:59 msgid "#!/usr/local/bin/python" -msgstr "" +msgstr "#!/usr/local/bin/python" #: faq/library.rst:61 msgid "" "as the very first line of your file, using the pathname for where the Python " "interpreter is installed on your platform." msgstr "" +"ως η πρώτη γραμμή του αρχείου σας, χρησιμοποιώντας το pathname για το πού " +"είναι εγκατεστημένος ο διερμηνέας Python στην πλατφόρμα σας." #: faq/library.rst:64 msgid "" @@ -126,10 +155,14 @@ msgid "" "variants support the following, assuming the Python interpreter is in a " "directory on the user's :envvar:`PATH`::" msgstr "" +"Εάν θέλετε το script να είναι ανεξάρτητο, από το που ζει ο διερμηνέας της " +"Python, μπορείτε να χρησιμοποιήσετε το πρόγραμμα :program:`env`. Σχεδόν " +"όλες οι παραλλαγές Unix υποστηρίζουν τα ακόλουθα, υποθέτοντας ότι ο " +"διερμηνέας Python βρίσκεται σε έναν κατάλογο στο :envvar:`PATH` του χρήστη::" #: faq/library.rst:69 msgid "#!/usr/bin/env python" -msgstr "" +msgstr "#!/usr/bin/env python" #: faq/library.rst:71 msgid "" @@ -137,6 +170,9 @@ msgid "" "scripts is often very minimal, so you need to use the actual absolute " "pathname of the interpreter." msgstr "" +"*Μην* το κάνετε αυτό για CGI scripts. Η μεταβλητή :envvar:`PATH` για τα CGI " +"scripts είναι συχνά πολύ ελάχιστη, επομένως πρέπει να χρησιμοποιήσετε το " +"πραγματικό απόλυτο όνομα διαδρομής του διερμηνέα." #: faq/library.rst:75 msgid "" @@ -144,6 +180,10 @@ msgid "" "env` program fails; or there's no env program at all. In that case, you can " "try the following hack (due to Alex Rezinsky):" msgstr "" +"Περιστασιακά, το περιβάλλον ενός χρήστη είναι τόσο γεμάτο που το πρόγραμμα :" +"program:`/usr/bin/env` αποτυγχάνει ή δεν υπάρχει καθόλου πρόγραμμα env. Σε " +"αυτήν την περίπτωση, μπορείτε να δοκιμάσετε το ακόλουθο hack (λόγω του Alex " +"Rezinsky):" #: faq/library.rst:79 msgid "" @@ -152,20 +192,26 @@ msgid "" "exec python $0 ${1+\"$@\"}\n" "\"\"\"" msgstr "" +"#! /bin/sh\n" +"\"\"\":\"\n" +"exec python $0 ${1+\"$@\"}\n" +"\"\"\"" #: faq/library.rst:86 msgid "" "The minor disadvantage is that this defines the script's __doc__ string. " "However, you can fix that by adding ::" msgstr "" +"Το, ελάχιστης σημασίας, μειονέκτημα είναι ότι αυτό καθορίζει τη συμβολοσειρά " +"__doc__ του script. Ωστόσο, μπορείτε να το διορθώσετε προσθέτοντας ::" #: faq/library.rst:89 msgid "__doc__ = \"\"\"...Whatever...\"\"\"" -msgstr "" +msgstr "__doc__ = \"\"\"...Whatever...\"\"\"" #: faq/library.rst:94 msgid "Is there a curses/termcap package for Python?" -msgstr "" +msgstr "Υπάρχει ένα curses/termcap πακέτο για την Python;" #: faq/library.rst:98 msgid "" @@ -174,6 +220,10 @@ msgid "" "compiled by default. (Note that this is not available in the Windows " "distribution -- there is no curses module for Windows.)" msgstr "" +"Για παραλλαγές Unix: Η τυπική διανομή του πηγαίου της Python συνοδεύεται από " +"ένα curses module στον υποκατάλογο :source:`Modules`, αν και δεν έχει " +"μεταγλωττιστεί από προεπιλογή. (Λάβετε υπόψη ότι αυτό δεν είναι διαθέσιμο " +"στη διανομή των Windows -- δεν υπάρχει curses module για Windows.)" #: faq/library.rst:103 msgid "" @@ -184,48 +234,60 @@ msgid "" "but there don't seem to be any currently maintained OSes that fall into this " "category." msgstr "" +"Το module :mod:`curses` υποστηρίζει βασικές curses λειτουργίες καθώς και " +"πολλές πρόσθετες λειτουργίες από ncurses και SYSV curses, όπως χρώμα, " +"υποστήριξη εναλλακτικού συνόλου χαρακτήρων, pads και υποστήριξη ποντικιού. " +"Αυτό σημαίνει ότι το module δεν είναι συμβατό με λειτουργικά συστήματα που " +"έχουνε μόνο BSD curses, αλλά δεν φαίνεται να υπάρχουν επί του παρόντος " +"διατηρημένα λειτουργικά συστήματα που να εμπίπτουν σε αυτήν την κατηγορία." #: faq/library.rst:111 msgid "Is there an equivalent to C's onexit() in Python?" -msgstr "" +msgstr "Υπάρχει κάτι ισοδύναμο με την onexit() της C στην Python;" #: faq/library.rst:113 msgid "" "The :mod:`atexit` module provides a register function that is similar to " "C's :c:func:`!onexit`." msgstr "" +"Το module :mod:`atexit` παρέχει μια συνάρτηση καταχωρητή παρόμοια με τη " +"συνάρτηση :c:func:`!onexit` της C." #: faq/library.rst:118 msgid "Why don't my signal handlers work?" -msgstr "" +msgstr "Γιατί δεν λειτουργούν οι χειριστές σήματος μου;" #: faq/library.rst:120 msgid "" "The most common problem is that the signal handler is declared with the " "wrong argument list. It is called as ::" msgstr "" +"Το πιο συνηθισμένο πρόβλημα είναι ότι ο χειριστής σήματος δηλώνεται με λάθος " +"λίστα ορισμάτων. Ονομάζεται ως ::" #: faq/library.rst:123 msgid "handler(signum, frame)" -msgstr "" +msgstr "handler(signum, frame)" #: faq/library.rst:125 msgid "so it should be declared with two parameters::" -msgstr "" +msgstr "οπότε θα πρέπει να δηλωθεί με δύο παραμέτρους::" #: faq/library.rst:127 msgid "" "def handler(signum, frame):\n" " ..." msgstr "" +"def handler(signum, frame):\n" +" ..." #: faq/library.rst:132 msgid "Common tasks" -msgstr "" +msgstr "Κοινές εργασίες" #: faq/library.rst:135 msgid "How do I test a Python program or component?" -msgstr "" +msgstr "Πως μπορώ να τεστάρω ένα Python πρόγραμμα ή ένα Python component;" #: faq/library.rst:137 msgid "" @@ -233,12 +295,17 @@ msgid "" "examples in the docstrings for a module and runs them, comparing the output " "with the expected output given in the docstring." msgstr "" +"Η Python συνοδεύεται από δύο frameworks για τεστ. To module :mod:`doctest` " +"βρίσκει παραδείγματα στα docstrings για ένα module και τα εκτελεί, " +"συγκρίνοντας την έξοδο με την αναμενόμενη έξοδο που δίνεται στο docstring." #: faq/library.rst:141 msgid "" "The :mod:`unittest` module is a fancier testing framework modelled on Java " "and Smalltalk testing frameworks." msgstr "" +"Το module :mod:`unittest` είναι ένα πιο εντυπωσιακό framework που έχει " +"σχεδιαστεί με βάση τα frameworks για τεστ της Java και του Smalltalk." #: faq/library.rst:144 msgid "" @@ -250,20 +317,32 @@ msgid "" "avoid depending on mutating global variables, since this makes testing much " "more difficult to do." msgstr "" +"Για να κάνετε τα τεστ σας ευκολότερα θα πρέπει να χρησιμοποιείτε μια καλή " +"αρθρωτή σχεδίαση στο πρόγραμμα σας. Το πρόγραμμα σας θα πρέπει να έχει όλες " +"σχεδόν τις λειτουργίες ενσωματωμένες είτε σε συναρτήσεις είτε σε μεθόδους " +"κλάσης - και αυτό μερικές φορές έχει το εκπληκτικό και ευχάριστο αποτέλεσμα " +"να κάνει το πρόγραμμα να τρέχει πιο γρήγορα (γιατί οι τοπικές προσβάσεις " +"μεταβλητών είναι πιο γρήγορες από τις καθολικές προσβάσεις). Επιπλέον, το " +"πρόγραμμα θα πρέπει να αποφεύγει την εξάρτηση από μεταλλάξεις παγκόσμιων " +"μεταβλητών, καθώς αυτό κάνει τη δοκιμή πολύ πιο δύσκολη." #: faq/library.rst:152 msgid "The \"global main logic\" of your program may be as simple as ::" msgstr "" +"Η \"παγκόσμια κύρια λογική\" του προγράμματος σας μπορεί να είναι τόσο απλή " +"όσο ::" #: faq/library.rst:154 msgid "" "if __name__ == \"__main__\":\n" " main_logic()" msgstr "" +"if __name__ == \"__main__\":\n" +" main_logic()" #: faq/library.rst:157 msgid "at the bottom of the main module of your program." -msgstr "" +msgstr "στο κάτω μέρος του κύριου module τους προγράμματός σας." #: faq/library.rst:159 msgid "" @@ -276,18 +355,32 @@ msgid "" "the \"production code\", since this makes it easy to find bugs and even " "design flaws earlier." msgstr "" +"Από τη στιγμή που το πρόγραμμα σας οργανωθεί ως μια συλλογή από συναρτήσεις " +"και κλάσεις που υλοποιούν μια διαδικασία, θα πρέπει να γράψετε τεστ " +"συναρτήσεις που εκτελούν τις αντίστοιχες διαδικασίες. Μια τεστ σουίτα που " +"αυτοματοποιεί μια ακολουθία από tests μπορεί να συσχετιστεί με κάθε module. " +"Αυτό ακούγεται σαν πολλή δουλειά, αλλά επειδή η Python είναι τόσο σύντομη " +"και ευέλικτη, αυτό είναι εκπληκτικά εύκολο. Μπορείτε να κάνετε την συγγραφή " +"κώδικα πολύ πιο ευχάριστη και διασκεδαστική γράφοντας τις δοκιμαστικές " +"συναρτήσεις σας παράλληλα με τον \"κώδικα παραγωγής\", καθώς αυτό " +"διευκολύνει την εύρεση σφαλμάτων και ακόμη και ελαττώματα σχεδιασμού " +"νωρίτερα." #: faq/library.rst:167 msgid "" "\"Support modules\" that are not intended to be the main module of a program " "may include a self-test of the module. ::" msgstr "" +"\"Modules υποστήριξης\" που δεν προορίζονται να είναι το κύριο module ενός " +"προγράμματος μπορεί να περιλαμβάνουν αυτοέλεγχο της ενότητας::" #: faq/library.rst:170 msgid "" "if __name__ == \"__main__\":\n" " self_test()" msgstr "" +"if __name__ == \"__main__\":\n" +" self_test()" #: faq/library.rst:173 msgid "" @@ -295,10 +388,13 @@ msgid "" "when the external interfaces are unavailable by using \"fake\" interfaces " "implemented in Python." msgstr "" +"Ακόμη και προγράμματα που αλληλεπιδρούν με πολύπλοκες εξωτερικές διεπαφές " +"μπορούν να δοκιμαστούν όταν οι εξωτερικές διεπαφές δεν είναι διαθέσιμες " +"χρησιμοποιώντας \"τεχνητές\" διεπαφές υλοποιημένες στην Python." #: faq/library.rst:179 msgid "How do I create documentation from doc strings?" -msgstr "" +msgstr "Πως δημιουργώ τεκμηρίωση από doc strings;" #: faq/library.rst:181 msgid "" @@ -307,24 +403,32 @@ msgid "" "docstrings is `epydoc `_. `Sphinx `_ can also include docstring content." msgstr "" +"Το module :mod:`pydoc` μπορεί να δημιουργήσει HTML από τα doc strings στον " +"πηγαίο κώδικα Python σας. Μια εναλλακτική λύση για τη δημιουργία μιας " +"τεκμηρίωσης API αποκλειστικά με docstrings είναι το `epydoc `_. `Sphinx `_ μπορεί επίσης " +"να περιλαμβάνει docstring περιεχόμενο." #: faq/library.rst:188 msgid "How do I get a single keypress at a time?" -msgstr "" +msgstr "Πως μπορώ να λάβω μόνο ένα πάτημα κουμπιού κάθε φορά;" #: faq/library.rst:190 msgid "" "For Unix variants there are several solutions. It's straightforward to do " "this using curses, but curses is a fairly large module to learn." msgstr "" +"Για τις παραλλαγές του Unix υπάρχουν πολλές λύσεις. Είναι απλό να κάνετε " +"αυτό χρησιμοποιώντας curses, αλλά τα curses είναι ένα αρκετά μεγάλο module " +"για εκμάθηση." #: faq/library.rst:234 msgid "Threads" -msgstr "" +msgstr "Νήματα (Threads)" #: faq/library.rst:237 msgid "How do I program using threads?" -msgstr "" +msgstr "Πώς μπορώ να προγραμματίσω χρησιμοποιώντας νήματα(threads);" #: faq/library.rst:239 msgid "" @@ -332,22 +436,31 @@ msgid "" "module. The :mod:`threading` module builds convenient abstractions on top of " "the low-level primitives provided by the :mod:`_thread` module." msgstr "" +"Βεβαιωθείτε ότι χρησιμοποιείτε το module :mod:`threading` και όχι το module :" +"mod:`_thread`. Το module :mod:`threading` παρέχει ένα πιο βολικό και υψηλού " +"επιπέδου τρόπο διαχείρισης νημάτων, χτίζοντας πάνω στις βασικές λειτουργίες " +"του module :mod:`_thread`." #: faq/library.rst:245 msgid "None of my threads seem to run: why?" -msgstr "" +msgstr "Κανένα από τα νήματα (threads) μου δεν φαίνεται να εκτελείται: γιατί;" #: faq/library.rst:247 msgid "" "As soon as the main thread exits, all threads are killed. Your main thread " "is running too quickly, giving the threads no time to do any work." msgstr "" +"Μόλις γίνει έξοδος από το κύριο νήμα, τερματίζονται όλα τα νήματα. Το κύριο " +"νήμα τρέχει πολύ γρήγορα, χωρίς να δίνεται χρόνος στα νήματα να κάνουν " +"οποιαδήποτε εργασία." #: faq/library.rst:250 msgid "" "A simple fix is to add a sleep to the end of the program that's long enough " "for all the threads to finish::" msgstr "" +"Μια απλή λύση είναι να προσθέσετε ένα sleep στο τέλος που προγράμματος που " +"είναι αρκετό για να τερματιστούν όλα τα νήματα::" #: faq/library.rst:253 msgid "" @@ -363,6 +476,17 @@ msgid "" "\n" "time.sleep(10) # <---------------------------!" msgstr "" +"import threading, time\n" +"\n" +"def thread_task(name, n):\n" +" for i in range(n):\n" +" print(name, i)\n" +"\n" +"for i in range(10):\n" +" T = threading.Thread(target=thread_task, args=(str(i), i))\n" +" T.start()\n" +"\n" +"time.sleep(10) # <---------------------------!" #: faq/library.rst:265 msgid "" @@ -370,10 +494,16 @@ msgid "" "run sequentially, one at a time! The reason is that the OS thread scheduler " "doesn't start a new thread until the previous thread is blocked." msgstr "" +"Αλλά τώρα (σε πολλές πλατφόρμες) τα νήματα δεν εκτελούνται παράλληλα, αλλά " +"φαίνεται να εκτελούνται διαδοχικά, ένα κάθε φορά! Ο λόγος είναι ότι ο " +"προγραμματιστής νημάτων του λειτουργικού συστήματος δεν ξεκινά ένα νέο νήμα " +"μέχρι να αποκλειστεί το προηγούμενο νήμα." #: faq/library.rst:269 msgid "A simple fix is to add a tiny sleep to the start of the run function::" msgstr "" +"Μια απλή λύση είναι να προσθέσετε ένα μικρό sleep στην αρχή της λειτουργίας " +"εκτέλεσης::" #: faq/library.rst:271 msgid "" @@ -388,6 +518,16 @@ msgid "" "\n" "time.sleep(10)" msgstr "" +"def thread_task(name, n):\n" +" time.sleep(0.001) # <--------------------!\n" +" for i in range(n):\n" +" print(name, i)\n" +"\n" +"for i in range(10):\n" +" T = threading.Thread(target=thread_task, args=(str(i), i))\n" +" T.start()\n" +"\n" +"time.sleep(10)" #: faq/library.rst:282 msgid "" @@ -397,16 +537,26 @@ msgid "" "the queue when it finishes, and let the main thread read as many tokens from " "the queue as there are threads." msgstr "" +"Αντί να προσπαθείτε να μαντέψετε μια καλή τιμή καθυστέρησης για την :func:" +"`time.sleep`, είναι καλύτερα να χρησιμοποιείτε κάποιο είδος μηχανισμού " +"σηματοφόρου. Μια ιδέα είναι να χρησιμοποιήσετε το module :mod:`queue` για " +"να δημιουργήσετε ένα αντικείμενο ουράς, αφήνοντας το κάθε νήμα να προσθέτει " +"ένα token στην ουρά όταν ολοκληρωθεί, και να αφήνει στο κύριο νήμα να " +"διαβάσει τόσα tokens από την ουρά όσα είναι και τα νήματα." #: faq/library.rst:290 msgid "How do I parcel out work among a bunch of worker threads?" msgstr "" +"Πως μπορώ να μοιράσω την εργασία σε ένα σωρό από νήματα για αυτήν την " +"εργασία;" #: faq/library.rst:292 msgid "" "The easiest way is to use the :mod:`concurrent.futures` module, especially " "the :mod:`~concurrent.futures.ThreadPoolExecutor` class." msgstr "" +"Ο ευκολότερο τρόπος είναι να χρησιμοποιήσετε το module :mod:`concurrent." +"futures`, ειδικά την κλάση :mod:`~concurrent.futures.ThreadPoolExecutor`." #: faq/library.rst:295 msgid "" @@ -417,10 +567,17 @@ msgid "" "``.get()`` method to return them. The class will take care of the locking " "necessary to ensure that each job is handed out exactly once." msgstr "" +"Ή, ένα θέλετε καλό έλεγχο στον αλγόριθμο αποστολής, μπορείτε να γράψετε τη " +"δική σας λογική με μη αυτόματο τρόπο. Χρησιμοποιήστε το module :mod:`queue` " +"για να δημιουργήσετε μια ουρά που περιέχει μια λίστα εργασιών. Η κλάση :" +"class:`~queue.Queue` διατηρεί μια λίστα αντικειμένων και έχει μια μέθοδο ``." +"put(obj)`` που προσθέτει στοιχεία στην ουρά και μια μέθοδο ``.get()`` για " +"επιστροφή. Η κλάση θα φροντίσει για το κλείδωμα που είναι απαραίτητο για να " +"διασφαλίσει ότι κάθε εργασία θα παραδοθεί ακριβώς μία φορά." #: faq/library.rst:302 msgid "Here's a trivial example::" -msgstr "" +msgstr "Ένα απλό παράδειγμα::" #: faq/library.rst:304 msgid "" @@ -460,10 +617,45 @@ msgid "" "print('Main thread sleeping')\n" "time.sleep(5)" msgstr "" +"import threading, queue, time\n" +"\n" +"# The worker thread gets jobs off the queue. When the queue is empty, it\n" +"# assumes there will be no more work and exits.\n" +"# (Realistically workers will run until terminated.)\n" +"def worker():\n" +" print('Running worker')\n" +" time.sleep(0.1)\n" +" while True:\n" +" try:\n" +" arg = q.get(block=False)\n" +" except queue.Empty:\n" +" print('Worker', threading.current_thread(), end=' ')\n" +" print('queue empty')\n" +" break\n" +" else:\n" +" print('Worker', threading.current_thread(), end=' ')\n" +" print('running with argument', arg)\n" +" time.sleep(0.5)\n" +"\n" +"# Create queue\n" +"q = queue.Queue()\n" +"\n" +"# Start a pool of 5 workers\n" +"for i in range(5):\n" +" t = threading.Thread(target=worker, name='worker %i' % (i+1))\n" +" t.start()\n" +"\n" +"# Begin adding work to the queue\n" +"for i in range(50):\n" +" q.put(i)\n" +"\n" +"# Give threads time to run\n" +"print('Main thread sleeping')\n" +"time.sleep(5)" #: faq/library.rst:340 msgid "When run, this will produce the following output:" -msgstr "" +msgstr "Κατά την εκτέλεση, αυτό θα παράγει την ακόλουθη έξοδο:" #: faq/library.rst:342 msgid "" @@ -481,16 +673,31 @@ msgid "" "Worker running with argument 5\n" "..." msgstr "" +"Running worker\n" +"Running worker\n" +"Running worker\n" +"Running worker\n" +"Running worker\n" +"Main thread sleeping\n" +"Worker running with argument 0\n" +"Worker running with argument 1\n" +"Worker running with argument 2\n" +"Worker running with argument 3\n" +"Worker running with argument 4\n" +"Worker running with argument 5\n" +"..." #: faq/library.rst:358 msgid "" "Consult the module's documentation for more details; the :class:`~queue." "Queue` class provides a featureful interface." msgstr "" +"Συμβουλευτείτε την τεκμηρίωση του module για περισσότερες λεπτομέρειες· η " +"κλάση :class:`~queue.Queue` παρέχει μια χαρακτηριστική διεπαφή." #: faq/library.rst:363 msgid "What kinds of global value mutation are thread-safe?" -msgstr "" +msgstr "Ποια είδη global μετάλλαξης τιμής είναι ασφαλή για νήμα(thread);" #: faq/library.rst:365 msgid "" @@ -501,6 +708,13 @@ msgid "" "instruction and therefore all the C implementation code reached from each " "instruction is therefore atomic from the point of view of a Python program." msgstr "" +"Ένα :term:`global interpreter lock` (GIL) χρησιμοποιείται εσωτερικά για να " +"διασφαλιστεί ότι μόνο ένα νήμα εκτελείται στο Python VM κάθε φορά. Γενικά, " +"η Python προσφέρει εναλλαγή μεταξύ νημάτων μόνο μεταξύ εντολών bytecode· το " +"πόσο συχνά γίνεται αυτή η εναλλαγή καθορίζεται από την :func:`sys." +"setswitchinterval`. Κάθε εντολή bytecode και επομένως όλος ο κώδικας " +"υλοποίησης C που φτάνει από κάθε εντολή είναι επομένως ατομικός από την " +"άποψη ενός προγράμματος Python." #: faq/library.rst:372 msgid "" @@ -509,12 +723,19 @@ msgid "" "shared variables of built-in data types (ints, lists, dicts, etc) that " "\"look atomic\" really are." msgstr "" +"Θεωρητικά, αυτό σημαίνει ότι μια ακριβώς λογιστική απαιτεί ακριβή κατανόηση " +"της εφαρμογής bytecode PVM. Στην πράξη, σημαίνει ότι οι λειτουργίες σε " +"κοινόχρηστες μεταβλητές ενσωματωμένων δεδομένων (ακέραιοι, λίστες, λεξικά, κ." +"λπ.) που \"φαίνονται ατομικά\" πραγματικά είναι." #: faq/library.rst:377 msgid "" "For example, the following operations are all atomic (L, L1, L2 are lists, " "D, D1, D2 are dicts, x, y are objects, i, j are ints)::" msgstr "" +"Για παράδειγμα, οι ακόλουθες πράξεις είναι όλες ατομικές (L, L1, L2 είναι " +"λίστες, D, D1, D2 είναι λεξικά, x, y είναι αντικείμενα, i, j είναι " +"ακέραιοι)::" #: faq/library.rst:380 msgid "" @@ -530,10 +751,21 @@ msgid "" "D1.update(D2)\n" "D.keys()" msgstr "" +"L.append(x)\n" +"L1.extend(L2)\n" +"x = L[i]\n" +"x = L.pop()\n" +"L1[i:j] = L2\n" +"L.sort()\n" +"x = y\n" +"x.field = y\n" +"D[x] = y\n" +"D1.update(D2)\n" +"D.keys()" #: faq/library.rst:392 msgid "These aren't::" -msgstr "" +msgstr "Αυτά δεν είναι::" #: faq/library.rst:394 msgid "" @@ -542,6 +774,10 @@ msgid "" "L[i] = L[j]\n" "D[x] = D[x] + 1" msgstr "" +"i = i+1\n" +"L.append(L[-1])\n" +"L[i] = L[j]\n" +"D[x] = D[x] + 1" #: faq/library.rst:399 msgid "" @@ -550,10 +786,15 @@ msgid "" "can affect things. This is especially true for the mass updates to " "dictionaries and lists. When in doubt, use a mutex!" msgstr "" +"Οι λειτουργίες που αντικαθιστούν άλλα αντικείμενα ενδέχεται να καλέσουν αυτά " +"τα άλλα αντικείμενα της :meth:`~object.__del__` όταν ο αριθμός αναφοράς τους " +"φτάσει στο μηδέν και αυτό μπορεί να επηρεάσει πράγματα. Αυτό ισχύει " +"ιδιαίτερα για τις μαζικές ενημερώσεις σε λεξικά και λίστες. Σε περίπτωση " +"αμφιβολίας, χρησιμοποιήστε ένα mutex!" #: faq/library.rst:406 msgid "Can't we get rid of the Global Interpreter Lock?" -msgstr "" +msgstr "Δεν μπορούμε να απαλλαγούμε από την Global Interpreter Lock;" #: faq/library.rst:410 msgid "" @@ -562,6 +803,11 @@ msgid "" "multi-threaded Python program effectively only uses one CPU, due to the " "insistence that (almost) all Python code can only run while the GIL is held." msgstr "" +"Το :term:`global interpreter lock` (GIL) θεωρείται συχνά ως εμπόδιο για την " +"ανάπτυξη της Python σε υψηλής τεχνολογίας μηχανήματα διακομιστών με " +"πολυεπεξεργαστές, επειδή ένα πρόγραμμα Python με πολλά νήματα χρησιμοποιεί " +"αποτελεσματικά μόνο μία CPU, λόγω της επιμονής ότι (σχεδόν) όλος ο κώδικας " +"της Python μπορεί να εκτελεστεί μόνο όσο διατηρείται το GIL." #: faq/library.rst:415 msgid "" @@ -574,6 +820,14 @@ msgid "" "due to the amount of fine-grained locking necessary to compensate for the " "removal of the GIL." msgstr "" +"Πίσω στις μέρες της Python 1.5, ο Greg Stein υλοποίησε πραγματικά ένα " +"ολοκληρωμένο σύνολο επιδιορθώσεων (οι επιδιορθώσεις \"ελεύθερου νήματος\") " +"που αφαίρεσε το GIL και το αντικατέστησε με ένα άριστα προσεγμένο κλειδωμένο " +"thread. Ο Adam Olsen έκανε πρόσφατα ένα παρόμοιο πείραμα στο έργο `python-" +"safethread `_. " +"Δυστυχώς, και τα δύο πειράματα εμφάνισαν απότομη πτώση στην απόδοση ενός " +"νήματος (τουλάχιστον 30% πιο αργή), λόγω της ποσότητας του προσεγμένου " +"κλειδώματος που απαιτείται για την αντιστάθμιση της αφαίρεσης του GIL." #: faq/library.rst:423 msgid "" @@ -585,6 +839,14 @@ msgid "" "module provides a lower-level API in case you want more control over " "dispatching of tasks." msgstr "" +"Αυτό δεν σημαίνει ότι δεν μπορείτε να κάνετε καλή χρήση της Python σε " +"μηχανήματα πολλαπλών επεξεργαστών! Απλώς πρέπει να είστε δημιουργικοί " +"μοιράζοντας την εργασία μεταξύ πολλαπλών *διεργασιών* και όχι πολλών " +"*νημάτων*. Η κλάση :class:`~concurrent.futures.ProcessPoolExecutor` στο " +"νέο module :mod:`concurrent.futures`, παρέχει έναν εύκολο τρόπο για να το " +"κάνετε αυτό· Το module :mod:`multiprocessing` παρέχει ένα API χαμηλότερου " +"επιπέδου σε περίπτωση που θέλετε περισσότερο έλεγχο στην αποστολή των " +"εργασιών." #: faq/library.rst:431 msgid "" @@ -594,6 +856,11 @@ msgid "" "work done. Some standard library modules such as :mod:`zlib` and :mod:" "`hashlib` already do this." msgstr "" +"Η συνετή χρήση των επεκτάσεων C βοηθάει επίσης· εάν χρησιμοποιείτε μια " +"επέκταση C για να εκτελέσετε μια χρονοβόρα εργασία, η επέκταση μπορεί να " +"απελευθερώσει το GIL ενώ το νήμα εκτέλεσης βρίσκεται στον κώδικα C και να " +"επιτρέψει σε άλλα νήματα να ολοκληρώσουν κάποια εργασία. Ορισμένα τυπικά " +"module βιβλιοθήκης όπως :mod:`zlib` και :mod:`hashlib` το κάνουν ήδη αυτό." #: faq/library.rst:437 msgid "" @@ -606,6 +873,16 @@ msgid "" "types have their own free list; these free lists would have to be moved to " "the interpreter state. And so on." msgstr "" +"Έχει προταθεί ότι το GIL θα πρέπει να είναι ένα κλείδωμα ανά κατάσταση " +"διερμηνέα αντί να είναι πραγματικά καθολικό∙ τότε οι διερμηνείς δεν θα " +"μπορούν να μοιράζονται αντικείμενα. Δυστυχώς, ούτε αυτό είναι πιθανό να " +"συμβεί. Θα ήταν τεράστιος όγκος δουλειάς, επειδή πολλές υλοποιήσεις " +"αντικειμένων επί του παρόντος έχουν παγκόσμια κατάσταση. Για παράδειγμα, " +"μικροί ακέραιοι αριθμοί και σύντομες συμβολοσειρές αποθηκεύονται στην κρυφή " +"μνήμη∙ αυτές οι κρυφές μνήμες θα πρέπει να μετακινηθούν στην κατάσταση " +"διερμηνέα. Άλλοι τύποι αντικειμένων έχουν τη δική τους κενή λίστα∙ αυτές οι " +"κενές λίστες θα πρέπει να μετακινηθούν στην κατάσταση διερμηνέα. Και ούτω " +"καθεξής." #: faq/library.rst:446 msgid "" @@ -614,20 +891,29 @@ msgid "" "extensions are being written at a faster rate than you can convert them to " "store all their global state in the interpreter state." msgstr "" +"Και αμφιβάλλω ότι μπορεί να γίνει ακόμη και σε πεπερασμένο χρόνο, επειδή το " +"ίδιο πρόβλημα υπάρχει για τις επεκτάσεις τρίτων. Είναι πιθανό ότι οι " +"επεκτάσεις τρίτων γράφονται με ταχύτερο ρυθμό από ό,τι μπορείτε να τις " +"μετατρέψετε για να αποθηκεύσετε όλη την καθολική τους κατάσταση στην " +"κατάσταση διερμηνέα." #: faq/library.rst:451 msgid "" "And finally, once you have multiple interpreters not sharing any state, what " "have you gained over running each interpreter in a separate process?" msgstr "" +"Και τέλος, από τη στιγμή που έχετε πολλούς διερμηνείς που δεν μοιράζονται " +"καμία κατάσταση, τι έχετε κερδίσει από τη λειτουργία κάθε διερμηνέα σε μια " +"ξεχωριστή διαδικασία;" #: faq/library.rst:456 msgid "Input and Output" -msgstr "" +msgstr "Είσοδος και Έξοδος" #: faq/library.rst:459 msgid "How do I delete a file? (And other file questions...)" msgstr "" +"Πώς μπορώ να διαγράψω ένα αρχείο; (Και άλλες ερωτήσεις για το αρχείο...)" #: faq/library.rst:461 msgid "" @@ -635,6 +921,10 @@ msgid "" "see the :mod:`os` module. The two functions are identical; :func:`~os." "unlink` is simply the name of the Unix system call for this function." msgstr "" +"Χρησιμοποιήστε τα ``os.remove(filename)`` ή ``os.unlink(filename)`` ∙ για " +"τεκμηρίωση, ανατρέξτε στο module :mod:`os`. Οι δύο συναρτήσεις είναι ίδιες∙ " +"η :func:`~os.unlink` είναι απλώς το όνομα της κλήσης συστήματος Unix για " +"αυτήν τη λειτουργία." #: faq/library.rst:465 msgid "" @@ -644,10 +934,18 @@ msgid "" "directories as long as they're empty; if you want to delete an entire " "directory tree and its contents, use :func:`shutil.rmtree`." msgstr "" +"Για να καταργήσετε έναν κατάλογο, χρησιμοποιήστε τη :func:`os.rmdir` ∙ " +"χρησιμοποιήστε τη :func:`os.mkdir` για να δημιουργήσετε έναν. Το ``os." +"makedirs(path)`` θα δημιουργήσει τυχόν ενδιάμεσους καταλόγους στο ``path`` " +"που δεν υπάρχουν. Το ``os.removedirs(path)`` θα αφαιρέσει τους ενδιάμεσους " +"καταλόγους εφόσον είναι κενοί∙ εάν θέλετε να διαγράψετε ολόκληρο δέντρο " +"καταλόγου και τα περιεχόμενα του, χρησιμοποιήστε τη :func:`shutil.rmtree`." #: faq/library.rst:471 msgid "To rename a file, use ``os.rename(old_path, new_path)``." msgstr "" +"Για να μετονομάσετε ένα αρχείο, χρησιμοποιήστε το ``os.rename(old_path, " +"new_path)``." #: faq/library.rst:473 msgid "" @@ -656,6 +954,11 @@ msgid "" "There's also ``os.ftruncate(fd, offset)`` for files opened with :func:`os." "open`, where *fd* is the file descriptor (a small integer)." msgstr "" +"Για να περικόψετε ένα αρχείο, ανοίξτε το χρησιμοποιώντας ``f = " +"open(filename, \"rb+\")``, και χρησιμοποιήστε το ``f.truncate(offset)``∙ " +"μετατόπιση των προεπιλογών στην τρέχουσα θέση αναζήτησης. Υπάρχει επίσης το " +"``os.ftruncate(fd, offset)`` για αρχεία που ανοίγουν με :func:`os.open`, " +"όπου *fd* είναι ο περιγραφέας αρχείου (ένας μικρός ακέραιος)." #: faq/library.rst:478 msgid "" @@ -663,10 +966,13 @@ msgid "" "files including :func:`~shutil.copyfile`, :func:`~shutil.copytree`, and :" "func:`~shutil.rmtree`." msgstr "" +"Το module :mod:`shutil` περιέχει επίσης έναν αριθμό λειτουργιών για εργασία " +"σε αρχεία, όπως :func:`~shutil.copyfile`, :func:`~shutil.copytree`, και :" +"func:`~shutil.rmtree`." #: faq/library.rst:484 msgid "How do I copy a file?" -msgstr "" +msgstr "Πως αντιγράφω ένα αρχείο;" #: faq/library.rst:486 msgid "" @@ -678,10 +984,17 @@ msgid "" "permissions and metadata, though using :func:`shutil.copy2` instead will " "preserve most (though not all) of it." msgstr "" +"Το module :mod:`shutil` περιέχει μια συνάρτηση :func:`~shutil.copyfile`. " +"Σημειώστε ότι στους τόμους NTFS των Windows, δεν αντιγράφει `alternate data " +"streams `_ " +"ούτε `resource forks `__ σε " +"τόμους macOS HFS+, αν και οι δύο χρησιμοποιούνται πλέον σπάνια. Επίσης δεν " +"αντιγράφει δικαιώματα αρχείων και μεταδεδομένα, αν και η χρήση :func:`shutil." +"copy2` θα διατηρήσει το μεγαλύτερο μέρος (αν και όχι όλο) από αυτό." #: faq/library.rst:497 msgid "How do I read (or write) binary data?" -msgstr "" +msgstr "Πώς διαβάζω (ή γράφω) δυαδικά δεδομένα;" #: faq/library.rst:499 msgid "" @@ -689,12 +1002,18 @@ msgid "" "`struct` module. It allows you to take a string containing binary data " "(usually numbers) and convert it to Python objects; and vice versa." msgstr "" +"Για να διαβάσετε ή να γράψετε σύνθετες μορφές δυαδικών δεδομένων, είναι " +"καλύτερο να χρησιμοποιήσετε το module :mod:`struct`. Σας επιτρέπει να " +"πάρετε μια συμβολοσειρά που περιέχει δυαδικά δεδομένα (συνήθως αριθμούς) και " +"να τη μετατρέψετε σε αντικείμενα Python και αντίστροφα." #: faq/library.rst:503 msgid "" "For example, the following code reads two 2-byte integers and one 4-byte " "integer in big-endian format from a file::" msgstr "" +"Για παράδειγμα, ο παρακάτω κώδικας διαβάζει δύο ακέραιους αριθμούς 2 byte " +"και έναν ακέραιο αριθμό 4 byte σε μορφή big-endian από ένα αρχείο::" #: faq/library.rst:506 msgid "" @@ -704,6 +1023,11 @@ msgid "" " s = f.read(8)\n" " x, y, z = struct.unpack(\">hhl\", s)" msgstr "" +"import struct\n" +"\n" +"with open(filename, \"rb\") as f:\n" +" s = f.read(8)\n" +" x, y, z = struct.unpack(\">hhl\", s)" #: faq/library.rst:512 msgid "" @@ -711,12 +1035,18 @@ msgid "" "one \"short integer\" (2 bytes), and 'l' reads one \"long integer\" (4 " "bytes) from the string." msgstr "" +"Το '>' στη συμβολοσειρά μορφής αναγκάζει δεδομένα big-endian∙ το γράμμα 'h' " +"διαβάζει έναν \"short integer\" (2 bytes), και το 'l' διαβάζει έναν \"long " +"integer\" (4 byte) από την συμβολοσειρά." #: faq/library.rst:516 msgid "" "For data that is more regular (e.g. a homogeneous list of ints or floats), " "you can also use the :mod:`array` module." msgstr "" +"Για δεδομένα που είναι πιο κανονικά (π.χ. μια ομοιογενής λίστα ακεραίων ή " +"αριθμούς με υποδιαστολή), μπορείτε επίσης να χρησιμοποιήσετε το module :mod:" +"`array`." #: faq/library.rst:521 msgid "" @@ -725,10 +1055,17 @@ msgid "" "instead (the default), the file will be open in text mode and ``f.read()`` " "will return :class:`str` objects rather than :class:`bytes` objects." msgstr "" +"Για να διαβάσετε και να γράψετε δυαδικά δεδομένα, είναι υποχρεωτικό να " +"ανοίξετε το αρχείο σε δυαδική λειτουργία (εδώ, περνώντας το ``\"rb\"`` στη :" +"func:`open`). Εάν χρησιμοποιήσετε το ``\"r\"`` αντί αυτού (προεπιλεγμένο) " +"το αρχείο θα είναι ανοιχτό σε λειτουργία κειμένου και το ``f.read()`` θα " +"επιστρέψει αντικείμενα :class:`str` αντί για αντικείμενα :class:`bytes`." #: faq/library.rst:529 msgid "I can't seem to use os.read() on a pipe created with os.popen(); why?" msgstr "" +"Δεν μπορώ να χρησιμοποιήσω το os.read() σε ένα pipe που δημιουργήθηκε με το " +"os.popen()∙ γιατί;" #: faq/library.rst:531 msgid "" @@ -738,36 +1075,46 @@ msgid "" "function. Thus, to read *n* bytes from a pipe *p* created with :func:`os." "popen`, you need to use ``p.read(n)``." msgstr "" +"Η :func:`os.read` είναι μια συνάρτηση χαμηλού επιπέδου που παίρνει έναν " +"περιγραφέα αρχείου, έναν μικρό ακέραιο που αντιπροσωπεύει το ανοιχτό " +"αρχείο. Η :func:`os.popen` δημιουργεί ένα αντικείμενο αρχείου υψηλού " +"επιπέδου, του ίδιου τύπου που επιστρέφεται από την ενσωματωμένη συνάρτηση :" +"func:`open`. Έτσι, για να διαβάσετε *n* byte από ένα pipe *p* που " +"δημιουργήθηκε με τη :func:`os.popen`, πρέπει να χρησιμοποιήσετε το ``p." +"read(n)``." #: faq/library.rst:617 msgid "How do I access the serial (RS232) port?" -msgstr "" +msgstr "Πώς μπορώ να αποκτήσω πρόσβαση στη σειριακή θύρα (RS232);" #: faq/library.rst:619 msgid "For Win32, OSX, Linux, BSD, Jython, IronPython:" -msgstr "" +msgstr "Για Win32, OSX, Linux, BSD, Jython, IronPython:" #: faq/library.rst:621 msgid ":pypi:`pyserial`" -msgstr "" +msgstr ":pypi:`pyserial`" #: faq/library.rst:623 msgid "For Unix, see a Usenet post by Mitch Chapman:" -msgstr "" +msgstr "Για το Unix, δείτε μια ανάρτηση στο Usenet από τον Mitch Chapman:" #: faq/library.rst:625 msgid "https://groups.google.com/groups?selm=34A04430.CF9@ohioee.com" -msgstr "" +msgstr "https://groups.google.com/groups?selm=34A04430.CF9@ohioee.com" #: faq/library.rst:629 msgid "Why doesn't closing sys.stdout (stdin, stderr) really close it?" msgstr "" +"Γιατί το κλείσιμο του sys.stdout (stdin, stderr) δεν το κλείνει πραγματικά;" #: faq/library.rst:631 msgid "" "Python :term:`file objects ` are a high-level layer of " "abstraction on low-level C file descriptors." msgstr "" +"Το Python :term:`file objects ` είναι ένα επίπεδο αφαίρεσης " +"υψηλού επιπέδου σε χαμηλού επιπέδου περιγραφείς αρχείων C." #: faq/library.rst:634 msgid "" @@ -777,6 +1124,11 @@ msgid "" "descriptor. This also happens automatically in ``f``'s destructor, when " "``f`` becomes garbage." msgstr "" +"Για τα περισσότερα αντικείμενα αρχείων που δημιουργείτε στην Python μέσω της " +"ενσωματωμένης συνάρτησης :func:`open`, η ``f.close()`` επισημαίνει το " +"αντικείμενο αρχείου Python ως κλειστό από την άποψη της Python και επίσης " +"κανονίζει να κλείσει ο υποκείμενος περιγραφέας αρχείου C. Αυτό συμβαίνει " +"επίσης αυτόματα στον καταστροφέα του ``f``, όταν το ``f`` γίνεται σκουπίδια." #: faq/library.rst:640 msgid "" @@ -785,6 +1137,10 @@ msgid "" "marks the Python-level file object as being closed, but does *not* close the " "associated C file descriptor." msgstr "" +"Αλλά τα stdin, stdout και stderr αντιμετωπίζονται ειδικά από την Python, " +"λόγω της ειδικής κατάστασης που τους δίνεται επίσης από τη C. Εκτελώντας το " +"``sys.stdout.close()`` επισημαίνει το αντικείμενο αρχείου σε επίπεδο Python " +"ως κλειστό, αλλά *δεν* κλείνει το συσχετισμένο περιγραφικό αρχείου C." #: faq/library.rst:645 msgid "" @@ -792,6 +1148,10 @@ msgid "" "first be sure that's what you really want to do (e.g., you may confuse " "extension modules trying to do I/O). If it is, use :func:`os.close`::" msgstr "" +"Για να κλείσετε τον υποκείμενο περιγραφέα αρχείου C για ένα από αυτά τα " +"τρία, θα πρέπει πρώτα να βεβαιωθείτε ότι αυτό θέλετε πραγματικά να κάνετε (π." +"χ., μπορείτε να μπερδέψετε τα modules επέκτασης που προσπαθούν να κάνουν I/" +"O). Εάν είναι, χρησιμοποιήστε τη :func:`os.close`::" #: faq/library.rst:649 msgid "" @@ -799,18 +1159,23 @@ msgid "" "os.close(stdout.fileno())\n" "os.close(stderr.fileno())" msgstr "" +"os.close(stdin.fileno())\n" +"os.close(stdout.fileno())\n" +"os.close(stderr.fileno())" #: faq/library.rst:653 msgid "Or you can use the numeric constants 0, 1 and 2, respectively." msgstr "" +"Ή μπορείτε να χρησιμοποιήσετε τις αριθμητικές σταθερές 0, 1 και 2, " +"αντίστοιχα." #: faq/library.rst:657 msgid "Network/Internet Programming" -msgstr "" +msgstr "Προγραμματισμός Δικτύου/Διαδικτύου" #: faq/library.rst:660 msgid "What WWW tools are there for Python?" -msgstr "" +msgstr "Ποια εργαλεία WWW υπάρχουν για την Python;" #: faq/library.rst:662 msgid "" @@ -818,12 +1183,17 @@ msgid "" "Reference Manual. Python has many modules that will help you build server-" "side and client-side web systems." msgstr "" +"Δείτε τα κεφάλαια με τίτλο :ref:`internet` και :ref:`netdata` στο Εγχειρίδιο " +"Αναφοράς Βιβλιοθήκης. Η Python έχει πολλά modules που θα σας βοηθήσουν να " +"δημιουργήσετε συστήματα ιστού από την πλευρά του διακομιστή και του πελάτη." #: faq/library.rst:668 msgid "" "A summary of available frameworks is maintained by Paul Boddie at https://" "wiki.python.org/moin/WebProgramming\\ ." msgstr "" +"Μια σύνοψη των διαθέσιμων πλαισίων διατηρείται από τον Paul Boddie στη " +"διεύθυνση https://wiki.python.org/moin/WebProgramming\\ ." #: faq/library.rst:671 msgid "" @@ -831,20 +1201,26 @@ msgid "" "at https://web.archive.org/web/20210224183619/http://phaseit.net/claird/comp." "lang.python/web_python." msgstr "" +"Η Cameron Laird διατηρεί ένα χρήσιμο σύνολο σελίδων σχετικά με τις " +"τεχνολογίες Ιστού Python στη διεύθυνση https://web.archive.org/" +"web/20210224183619/http://phaseit.net/claird/comp.lang.python/web_python." #: faq/library.rst:676 msgid "How can I mimic CGI form submission (METHOD=POST)?" -msgstr "" +msgstr "Πώς μπορώ να μιμηθώ την υποβολή φόρμας CGI (METHOD=POST);" #: faq/library.rst:678 msgid "" "I would like to retrieve web pages that are the result of POSTing a form. Is " "there existing code that would let me do this easily?" msgstr "" +"Θα ήθελα να ανακτήσω ιστοσελίδες που είναι αποτέλεσμα του POST μιας φόρμας. " +"Υπάρχει κώδικας που θα επέτρεπε να το κάνω εύκολα;" #: faq/library.rst:681 msgid "Yes. Here's a simple example that uses :mod:`urllib.request`::" msgstr "" +"Ναι. Ακολουθεί ένα απλό παράδειγμα που χρησιμοποιεί :mod:`urllib.request`::" #: faq/library.rst:683 msgid "" @@ -861,6 +1237,18 @@ msgid "" "with req:\n" " msg, hdrs = req.read(), req.info()" msgstr "" +"#!/usr/local/bin/python\n" +"\n" +"import urllib.request\n" +"\n" +"# build the query string\n" +"qs = \"First=Josephine&MI=Q&Last=Public\"\n" +"\n" +"# connect and send the server a path\n" +"req = urllib.request.urlopen('http://www.some-server.out-there'\n" +" '/cgi-bin/some-cgi-script', data=qs)\n" +"with req:\n" +" msg, hdrs = req.read(), req.info()" #: faq/library.rst:696 msgid "" @@ -868,6 +1256,10 @@ msgid "" "be quoted using :func:`urllib.parse.urlencode`. For example, to send " "``name=Guy Steele, Jr.``::" msgstr "" +"Λάβετε υπόψιν ότι γενικά για λειτουργίες POST με κωδικοποίηση ποσοστού, οι " +"συμβολοσειρές ερωτημάτων πρέπει να αναφέρονται χρησιμοποιώντας τη :func:" +"`urllib.parse.urlencode`. Για παράδειγμα, για να στείλετε ``name=Guy " +"Steele, Jr.``::" #: faq/library.rst:700 msgid "" @@ -875,34 +1267,42 @@ msgid "" ">>> urllib.parse.urlencode({'name': 'Guy Steele, Jr.'})\n" "'name=Guy+Steele%2C+Jr.'" msgstr "" +">>> import urllib.parse\n" +">>> urllib.parse.urlencode({'name': 'Guy Steele, Jr.'})\n" +"'name=Guy+Steele%2C+Jr.'" #: faq/library.rst:704 msgid ":ref:`urllib-howto` for extensive examples." -msgstr "" +msgstr ":ref:`urllib-howto` για εκτενή παραδείγματα." #: faq/library.rst:708 msgid "What module should I use to help with generating HTML?" -msgstr "" +msgstr "Τι module πρέπει να χρησιμοποιήσω για να βοηθήσω στην δημιουργία HTML;" #: faq/library.rst:712 msgid "" "You can find a collection of useful links on the `Web Programming wiki page " "`_." msgstr "" +"Μπορείτε να βρείτε μια συλλογή από χρήσιμους συνδέσμους στη σελίδα `Web " +"Programming wiki page `_." #: faq/library.rst:717 msgid "How do I send mail from a Python script?" -msgstr "" +msgstr "Πώς μπορώ να στείλω αλληλογραφία από ένα Python script;" #: faq/library.rst:719 msgid "Use the standard library module :mod:`smtplib`." -msgstr "" +msgstr "Χρησιμοποιήστε την τυπική module βιβλιοθήκη :mod:`smtplib`." #: faq/library.rst:721 msgid "" "Here's a very simple interactive mail sender that uses it. This method will " "work on any host that supports an SMTP listener. ::" msgstr "" +"Εδώ είναι ένας πολύ απλός διαδραστικός αποστολέας αλληλογραφίας που τον " +"χρησιμοποιεί. Αυτή η μέθοδος θα λειτουργήσει σε οποιονδήποτε κεντρικό " +"υπολογιστή υποστηρίζει το πρόγραμμα ακρόασης SMTP. ::" #: faq/library.rst:724 msgid "" @@ -923,6 +1323,22 @@ msgid "" "server.sendmail(fromaddr, toaddrs, msg)\n" "server.quit()" msgstr "" +"import sys, smtplib\n" +"\n" +"fromaddr = input(\"From: \")\n" +"toaddrs = input(\"To: \").split(',')\n" +"print(\"Enter message, end with ^D:\")\n" +"msg = ''\n" +"while True:\n" +" line = sys.stdin.readline()\n" +" if not line:\n" +" break\n" +" msg += line\n" +"\n" +"# The actual mail send\n" +"server = smtplib.SMTP('localhost')\n" +"server.sendmail(fromaddr, toaddrs, msg)\n" +"server.quit()" #: faq/library.rst:741 msgid "" @@ -931,6 +1347,10 @@ msgid "" "usr/sbin/sendmail``. The sendmail manual page will help you out. Here's " "some sample code::" msgstr "" +"Μια εναλλακτική λύση μόνο για Unix χρησιμοποιεί sendmail. Η τοποθεσία του " +"προγράμματος sendmail ποικίλλει μεταξύ των συστημάτων∙ μερικές φορές είναι " +"``/usr/lib/sendmail``, μερικές φορές ``/usr/sbin/sendmail``. Η σελίδα " +"εγχειριδίου sendmail θα σας βοηθήσει. Ορίστε ένα δείγμα κώδικα::" #: faq/library.rst:746 msgid "" @@ -947,16 +1367,30 @@ msgid "" "if sts != 0:\n" " print(\"Sendmail exit status\", sts)" msgstr "" +"import os\n" +"\n" +"SENDMAIL = \"/usr/sbin/sendmail\" # sendmail location\n" +"p = os.popen(\"%s -t -i\" % SENDMAIL, \"w\")\n" +"p.write(\"To: receiver@example.com\\n\")\n" +"p.write(\"Subject: test\\n\")\n" +"p.write(\"\\n\") # blank line separating headers from body\n" +"p.write(\"Some text\\n\")\n" +"p.write(\"some more text\\n\")\n" +"sts = p.close()\n" +"if sts != 0:\n" +" print(\"Sendmail exit status\", sts)" #: faq/library.rst:761 msgid "How do I avoid blocking in the connect() method of a socket?" -msgstr "" +msgstr "Πώς μπορώ να αποφύγω τον αποκλεισμό στη μέθοδο connect() ενός socket;" #: faq/library.rst:763 msgid "" "The :mod:`select` module is commonly used to help with asynchronous I/O on " "sockets." msgstr "" +"Το module :mod:`select` χρησιμοποιείται συνήθως για να βοηθήσει με " +"ασύγχρονες I/O σε sockets." #: faq/library.rst:766 msgid "" @@ -968,6 +1402,14 @@ msgid "" "return different values, so you're going to have to check what's returned on " "your system." msgstr "" +"Για να αποτρέψετε τον αποκλεισμό της σύνδεσης TCP, μπορείτε να ρυθμίσετε την " +"υποδοχή σε λειτουργία μη αποκλεισμού. Στην συνέχεια, όταν κάνετε τη :meth:" +"`~socket.socket.connect`, είτε θα συνδεθείτε αμέσως (απίθανο), είτε θα " +"λάβετε μια εξαίρεση που περιέχει τον αριθμό σφάλματος ως ``.errno``. Το " +"``errno.EINPROGRESS`` υποδηλώνει ότι η σύνδεση είναι σε εξέλιξη, αλλά δεν " +"έχει ολοκληρωθεί ακόμα. Διαφορετικά λειτουργικά συστήματα θα επιστρέψουν " +"διαφορετικές τιμές, επομένως θα πρέπει να ελέγξετε τι επιστρέφεται στο " +"σύστημα σας." #: faq/library.rst:774 msgid "" @@ -977,6 +1419,12 @@ msgid "" "indicate that you're connected -- or you can pass this socket to :meth:" "`select.select` to check if it's writable." msgstr "" +"Μπορείτε να χρησιμοποιήσετε τη μέθοδο :meth:`~socket.socket.connect_ex` για " +"να αποφύγετε τη δημιουργία εξαίρεσης. Απλώς θα επιστρέψει την τιμή errno. " +"Για δημοσκόπηση, μπορείτε να καλέσετε το :meth:`~socket.socket.connect_ex` " +"ξανά αργότερα -- ``0`` ή ``errno.EISCONN`` υποδηλώνει ότι είστε συνδεδεμένοι " +"-- ή μπορείτε να περάσετε αυτό το socket στη :meth:`select.select` για να " +"ελέγξτε αν είναι εγγράψιμο." #: faq/library.rst:782 msgid "" @@ -985,18 +1433,22 @@ msgid "" "network code. The third-party `Twisted `_ library is a " "popular and feature-rich alternative." msgstr "" +"Το module :mod:`asyncio` παρέχει μια γενικού σκοπού απλή και ταυτόχρονη " +"ασύγχρονη βιβλιοθήκη, η οποία μπορεί να χρησιμοποιηθεί για τη σύνταξη κώδικα " +"δικτύου χωρίς αποκλεισμό. Η βιβλιοθήκη `Twisted `_ " +"είναι μια δημοφιλής και με πολλές λειτουργίες εναλλακτική λύση." #: faq/library.rst:790 msgid "Databases" -msgstr "" +msgstr "Βάσεις Δεδομένων" #: faq/library.rst:793 msgid "Are there any interfaces to database packages in Python?" -msgstr "" +msgstr "Υπάρχουν διεπαφές σε πακέτα βάσεων δεδομένων στην Python;" #: faq/library.rst:795 msgid "Yes." -msgstr "" +msgstr "Ναι." #: faq/library.rst:797 msgid "" @@ -1005,6 +1457,10 @@ msgid "" "`sqlite3` module, which provides a lightweight disk-based relational " "database." msgstr "" +"Διεπαφές σε κατακερματισμούς που βασίζονται σε δίσκο, όπως :mod:`DBM ` και :mod:`GDBM ` περιλαμβάνονται επίσης στην τυπική Python. " +"Υπάρχει επίσης το module :mod:`sqlite3`, το οποίο παρέχει μια ελαφριά " +"σχεσιακή βάση δεδομένων που βασίζεται στο δίσκο." #: faq/library.rst:802 msgid "" @@ -1012,10 +1468,13 @@ msgid "" "`DatabaseProgramming wiki page `_ for details." msgstr "" +"Υποστήριξη για τις περισσότερες σχεσιακές βάσεις δεδομένων είναι διαθέσιμη. " +"Δείτε τη σελίδα `DatabaseProgramming wiki page `_ για λεπτομέρειες." #: faq/library.rst:808 msgid "How do you implement persistent objects in Python?" -msgstr "" +msgstr "Πως υλοποιείτε persistent αντικείμενα στην Python;" #: faq/library.rst:810 msgid "" @@ -1024,63 +1483,85 @@ msgid "" "mod:`shelve` library module uses pickle and (g)dbm to create persistent " "mappings containing arbitrary Python objects." msgstr "" +"To module βιβλιοθήκης :mod:`pickle` το λύνει αυτό με πολύ γενικό τρόπο (αν " +"και δεν μπορείτε ακόμα να αποθηκεύσετε πράγματα όπως ανοιχτά αρχεία, sockets " +"ή παράθυρα), και το module βιβλιοθήκης :mod:`shelve` χρησιμοποιεί pickle και " +"(g)dbm για τη δημιουργία επίμονων αντιστοιχίσεων που περιέχουν αυθαίρετα " +"αντικείμενα Python." #: faq/library.rst:817 msgid "Mathematics and Numerics" -msgstr "" +msgstr "Μαθηματικά και Αριθμητικά" #: faq/library.rst:820 msgid "How do I generate random numbers in Python?" -msgstr "" +msgstr "Πως μπορώ να δημιουργήσω τυχαίους αριθμούς στην Python;" #: faq/library.rst:822 msgid "" "The standard module :mod:`random` implements a random number generator. " "Usage is simple::" msgstr "" +"Η τυπική ενότητα :mod:`random` υλοποιεί μια γεννήτρια τυχαίων αριθμών. Η " +"χρήση είναι απλή::" #: faq/library.rst:825 msgid "" "import random\n" "random.random()" msgstr "" +"import random\n" +"random.random()" #: faq/library.rst:828 msgid "This returns a random floating-point number in the range [0, 1)." msgstr "" +"Αυτό επιστρέφει έναν τυχαίο αριθμό κινητής υποδιαστολής στο εύρος [0, 1)." #: faq/library.rst:830 msgid "" "There are also many other specialized generators in this module, such as:" msgstr "" +"Υπάρχουν επίσης πολλές άλλες εξειδικευμένες γεννήτριες σε αυτό το module, " +"όπως:" #: faq/library.rst:832 msgid "``randrange(a, b)`` chooses an integer in the range [a, b)." -msgstr "" +msgstr "Το ``randrange(a, b)`` επιλέγει έναν ακέραιο στο εύρος [a, b)." #: faq/library.rst:833 msgid "``uniform(a, b)`` chooses a floating-point number in the range [a, b)." msgstr "" +"Το ``uniform(a, b)`` επιλέγει έναν αριθμό κινητής υποδιαστολής στο εύρος [a, " +"b)." #: faq/library.rst:834 msgid "" "``normalvariate(mean, sdev)`` samples the normal (Gaussian) distribution." msgstr "" +"Το ``normalvariate(mean, sdev)`` λαμβάνει δείγματα της κανονικής (Gaussian) " +"κατανομής." #: faq/library.rst:836 msgid "Some higher-level functions operate on sequences directly, such as:" msgstr "" +"Ορισμένες συναρτήσεις υψηλότερου επιπέδου λειτουργούν απευθείας σε " +"ακολουθίες, όπως:" #: faq/library.rst:838 msgid "``choice(S)`` chooses a random element from a given sequence." msgstr "" +"To ``choice(S)`` επιλέγει ένα τυχαίο στοιχείο από μια δεδομένη ακολουθία." #: faq/library.rst:839 msgid "``shuffle(L)`` shuffles a list in-place, i.e. permutes it randomly." msgstr "" +"Το ``shuffle(L)`` ανακατεύει μια λίστα επιτόπου, δηλαδή τη μεταθέτει τυχαία." #: faq/library.rst:841 msgid "" "There's also a ``Random`` class you can instantiate to create independent " "multiple random number generators." msgstr "" +"Υπάρχει επίσης μια κλάση ``Random`` που μπορείτε να επιβεβαιώσετε για να " +"δημιουργήσετε ανεξάρτητες γεννήτριες πολλαπλών τυχαίων αριθμών."