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

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

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

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

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

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

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

Δημοσίευσηαπό clepto » 30 Ιαν 2012, 16:56

γιατι ομως; αφου την καλω...
Κώδικας: Επιλογή όλων
if self.folder_exist() is True:
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 » 30 Ιαν 2012, 17:11

Οπότε έλεγξε αν αντίστοιχα ο παραπάνω κώδικας εκτελείται.
Επίσης καλό είναι νομίζω να αλλάξεις το "is" με "==" γιατί εξετάζεις για ισοδυναμία, όχι για ταυτότητα.
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

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

Δημοσίευσηαπό clepto » 30 Ιαν 2012, 17:54

αν διαγραψω τον φακελο vault που περιεχει και τα αρχεια με τις λιστες τοτε μπορω να φτιαξω φακελο, αν ομως φτιαξω φακελο, και μετα προσπαθησω να φτιαξω και αλλο δεν μπορω μου λεει οτι υπαρχει ηδη...αρα εκτελειται η μεθοδος αλλα γυρναει παντα true οτι ονομα και να βαλω...

Κώδικας: Επιλογή όλων
def folder_exist(self):
self.load_folders()
name = str(self.createLineEdit.text().toUtf8())
if name in self.efoldersdata:
return True
else:
return False

def load_folders(self):
self.efoldersdata = []
self.ofoldersdata = []
try:
f = open(efolders, 'rb')
except IOError:
QMessageBox.warning(self, self.tr("Check files"),
self.tr('''Check if the file ~/.vault/cache/existing_folders.data exist!
Note that vault folder is a hidden folder, press Ctrl+H to see hidden folders.'''))
try:
self.efoldersdata = pickle.load(f)
except (EOFError, IOError):
pass
f.close()
try:
f = open(ofolders, 'rb')
except IOError:
QMessageBox.warning(self, self.tr("Check files"),
self.tr('''Check if the file ~/.vault/cache/open_folders.data exist!
Note that vault folder is a hidden folder, press Ctrl+H to see hidden folders.'''))
try:
self.ofoldersdata = pickle.load(f)
except (EOFError, IOError):
pass
f.close()
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

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

Για το post
viewtopic.php?f=6&t=5094&start=570#p227647

1) O τελεστής "in" (membership operator) της python είναι
για να ελέγχει αν ένα μια μεταβλητή (η ακόμα ένα συγκεκριμένο object για την περίπτωση ελέγχου σε μια λίστα ή tuple κλπ) υπάρχει
σε μια ακολουθία (sequence )όπως strings,tuples,lists,sets

2)
το
Κώδικας: Επιλογή όλων
for Χ in sequence:
print X

εναποθέτει στην μεταβλητή Χ διαδοχικά τιμές από το μηδέν σημείο της sequence εώς το μήκος της ( len(sequence) )
αφού ένα προς ένα έλεγχο κάνει ηδη ο "in" operator
ο explicit έλεγχος ένα προς ένα είναι περιττός (φυσικά γίνεται και έτσι)
αν η ακολουθία σου είχε έχει 1000 αντικείμενα θα έκανε 1000000 loops !!!!

επομένως
o παρακάτω κώδικας
Κώδικας: Επιλογή όλων
for i in self.folders_names:
if name in self.folders_names:
return True
....

μπορεί να γίνει
Κώδικας: Επιλογή όλων
if name in self.folders_names:
return True
else:
return False


Τέλος
στο except clause αντί για pass βάλε
return False
και βάλε το file.close() μαζί με ένα return False σε ένα finally clause

γιατι άν δεν έχεις ονόματα των φακέλων ( folders_names )
με άλλα λόγια έχεις ανύπαρκτα folders_names
τότε το name δεν μπορεί να υπάρχει σε ανύπαρκτα folders_names ;)
οπότε μπορείς να κάνεις έγκαιρα return False


επομένως o κώδικας:
Κώδικας: Επιλογή όλων
try:
self.folders_names = pickle.load(f)
except (EOFError, IOError):
pass
f.close()

μπορεί να γίνει
Κώδικας: Επιλογή όλων
try:
self.folders_names = pickle.load(f)
except (EOFError, IOError):
pass
finally:
f.close()
return False
Θέλουμε και μπορούμε να έχουμε μια καλύτερη ζωή και όσο θα ζούμε θα προσπαθούμε να την αποκτήσουμε ακόμα και αν πεθάνουμε προσπαθώντας, και αν κάποια στιγμή λιγίσουμε έχουμε το επίπεδο να πούμε κουράστηκα λίγο να ,να ξαποστάσουμε , ώστε να συνεχίσουμε πάλι δυνατοί ξανά.

Μήνυμα με αγάπη και αληλλεγγύη σε όλους τους ανθρώπους από όλους τους λαούς , ιδίως του Ελληνικού.
Άβαταρ μέλους
sokoban4ever
Επίτιμο μέλος
Επίτιμο μέλος
 
Δημοσιεύσεις: 2331
Εγγραφή: 13 Φεβ 2009, 02:22
Εκτύπωση

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

Δημοσίευσηαπό clepto » 03 Φεβ 2012, 01:07

εχω αυτο σε μια μεταβλητη
Κώδικας: Επιλογή όλων
Version 6 configuration; created by EncFS 1.7.4 (revision 20100713)
Filesystem cipher: "ssl/aes", version 3:0:0 (χρήση 3:0:2)
Filename encoding: "nameio/block", version 3:0:0 (χρήση 3:0:1)
Μέγεθος κλειδιού: 192 ψηφία
Using PBKDF2, with 113303 iterations
Salt Size: 160 bits
Μέγεθος block: 1024 bytes
Each file contains 8 byte header with unique IV data.
Filenames encoded using IV chaining mode.
File holes passed through to ciphertext.
και θελω να το κανω unicode αλλα μου βγαζει
Κώδικας: Επιλογή όλων
UnicodeDecodeError: 'ascii' codec can't decode byte 0xcf in position 114: ordinal not in range(128)
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

Δημοσίευσηαπό pmav99 » 03 Φεβ 2012, 01:18

Τι εννοείς να το κάνεις unicode? Βάλε αυτό για αρχή:
Κώδικας: Επιλογή όλων
from __future__ import unicode_literals
pmav99
seniorTUX
seniorTUX
 
Δημοσιεύσεις: 574
Εγγραφή: 05 Ιούλ 2008, 14:29
Εκτύπωση

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

Δημοσίευσηαπό clepto » 03 Φεβ 2012, 01:38

το εχω βαλει...
κανω unicode(var) και παίρνω το πάνω σφάλμα
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 » 03 Φεβ 2012, 01:41

clepto έγραψε:το εχω βαλει...
κανω unicode(var) και παίρνω το πάνω σφάλμα

Τι τύπου είναι η μεταβλητή; (type(var))
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

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

Δημοσίευσηαπό clepto » 03 Φεβ 2012, 01:53

<type 'str'>
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
Εκτύπωση

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

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