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

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

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

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

Δημοσίευσηαπό Ilias95 » 03 Οκτ 2011, 20:43

Δεν έχω ιδέα από bash scripting. Τις συνδέσεις μεταξύ bash και python θα τις κάνεις μόνος σου.
Θες κάτι σαν menu που έδειξες πριν στον κώδικα σου, με επιλογή 1 και 2 για προσθήκη ή διαγραφή;
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

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

Δημοσίευσηαπό clepto » 03 Οκτ 2011, 20:46

όχι, απλά γράψε τις συναρτήσεις για την διαγραφή και την προσθήκη και τα υπόλοιπα θα τα κάνω εγώ! ευχαριστώ :bow: :bow:
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 Οκτ 2011, 20:59

1. Γιατί δεν το κάνεις όλο από bash?
2. Γιατί δεν το κάνεις όλο από python?
pmav99
seniorTUX
seniorTUX
 
Δημοσιεύσεις: 574
Εγγραφή: 05 Ιούλ 2008, 14:29
Εκτύπωση

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

Δημοσίευσηαπό Ilias95 » 03 Οκτ 2011, 21:10

Λοιπόν, να ο κώδικας:

Spoiler: show
Κώδικας: Επιλογή όλων
#!/usr/bin/python3

import pickle

class Edit:

def __init__(self):
self.pickle_file = 'list.data'
self.txt_file = 'files_names.txt'
self.names_list = self.load_list()

def list_append(self, name):
if not name in self.names_list:
self.names_list.append(name)
else:
print('This file name already exists!')
self.save_list()

def delete_from_list(self, name):
if name in self.names_list:
for i in self.names_list:
if i == name:
self.names_list.remove(i)
else:
print('There is no file with the name "{}"'.format(name))
self.save_list()

def save_list(self):
with open(self.pickle_file, 'wb') as a:
pickle.dump(self.names_list, a)
self.write_to_file()

def load_list(self):
try:
with open(self.pickle_file, 'rb') as a:
a_list = pickle.load(a)
except IOError:
return list()
return a_list

def write_to_file(self):
text = ''
for i in self.names_list:
text += i + '\n'
with open(self.txt_file, mode='w', encoding='utf-8') as a:
a.write(text)

a = Edit()

Σύντομη τεκμηρίωση:

Σε κάθε προσθήκη ή διαγραφή ονόματος προστίθεται (αν δεν υπάρχει ήδη) ή διαγράφεται (εφόσον υπάρχει) ένα string από μια λίστα.
Μετά την επεξεργασία της λίστας, η λίστα αποθηκεύεται με το άρθρωμα pickle και αμέσως από την λίστα δημιουργώ ένα αρχείο .txt το οποίο κάθε φορά ξαναγράφεται απ' την αρχή.
Μόλις αρχικοποιείται η κλάση "φορτώνεται" η λίστα από το "list.data"...

Πως θα το δουλέψεις:

Για να προσθέσεις όνομα φακέλου προσθέτεις στο τέλος του κώδικα:
Κώδικας: Επιλογή όλων
a.list_append('ena onoma')

Για να διαγράψεις:
Κώδικας: Επιλογή όλων
a.delete_from_list('ena_onoma')
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

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

Δημοσίευσηαπό clepto » 03 Οκτ 2011, 22:24

pmav99 έγραψε:1. Γιατί δεν το κάνεις όλο από bash?
2. Γιατί δεν το κάνεις όλο από python?
τις εντολές στο bash για τα αρχεια δεν δουλευουν παντα μεσα στο προγραμμα, και δεν με βολευει να το κανω ολο σε Python γιατ ειναι ηδη γραμμενο σε bash

Ilias95 έγραψε:Λοιπόν, να ο κώδικας:

Spoiler: show
Κώδικας: Επιλογή όλων
#!/usr/bin/python3

import pickle

class Edit:

def __init__(self):
self.pickle_file = 'list.data'
self.txt_file = 'files_names.txt'
self.names_list = self.load_list()

def list_append(self, name):
if not name in self.names_list:
self.names_list.append(name)
else:
print('This file name already exists!')
self.save_list()

def delete_from_list(self, name):
if name in self.names_list:
for i in self.names_list:
if i == name:
self.names_list.remove(i)
else:
print('There is no file with the name "{}"'.format(name))
self.save_list()

def save_list(self):
with open(self.pickle_file, 'wb') as a:
pickle.dump(self.names_list, a)
self.write_to_file()

def load_list(self):
try:
with open(self.pickle_file, 'rb') as a:
a_list = pickle.load(a)
except IOError:
return list()
return a_list

def write_to_file(self):
text = ''
for i in self.names_list:
text += i + '\n'
with open(self.txt_file, mode='w', encoding='utf-8') as a:
a.write(text)

a = Edit()

Σύντομη τεκμηρίωση:

Σε κάθε προσθήκη ή διαγραφή ονόματος προστίθεται (αν δεν υπάρχει ήδη) ή διαγράφεται (εφόσον υπάρχει) ένα string από μια λίστα.
Μετά την επεξεργασία της λίστας, η λίστα αποθηκεύεται με το άρθρωμα pickle και αμέσως από την λίστα δημιουργώ ένα αρχείο .txt το οποίο κάθε φορά ξαναγράφεται απ' την αρχή.
Μόλις αρχικοποιείται η κλάση "φορτώνεται" η λίστα από το "list.data"...

Πως θα το δουλέψεις:

Για να προσθέσεις όνομα φακέλου προσθέτεις στο τέλος του κώδικα:
Κώδικας: Επιλογή όλων
a.list_append('ena onoma')

Για να διαγράψεις:
Κώδικας: Επιλογή όλων
a.delete_from_list('ena_onoma')
ευχαριστώ πολύ!!!άμα έχω κάποια απορία θα επανέλθω
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

Δημοσίευσηαπό clepto » 03 Οκτ 2011, 23:10

να ρωτήσω κάτι, επειδή χρειάζομαι 2 αρχεία, ένα για τους φακέλους που υπάρχουν και ένα για τους φακέλους που είναι ανοιχτοί εκείνη στην στιγμή, μπορώ με κάποιον τρόπο να αλλάζω το αρχεία που θέλω να τα γράψω; πχ με argument όταν καλώ την συνάρτηση;

ειλικρινά συγγνώμη που το ξέχασα πριν και τώρα σε βάζω σε κόπο... :oops:
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 Οκτ 2011, 23:13

clepto έγραψε:να ρωτήσω κάτι, επειδή χρειάζομαι 2 αρχεία, ένα για τους φακέλους που υπάρχουν και ένα για τους φακέλους που είναι ανοιχτή εκείνη στην στιγμή, μπορώ με κάποιον τρόπο να αλλάζω το αρχεία που θέλω να τα γράψω; πχ με argument όταν καλώ την συνάρτηση;

ειλικρινά συγγνώμη που το ξέχασα πριν και τώρα σε βάζω σε κόπο... :oops:

Δηλαδή πλέον θες 2 αρχεία; Ένα με κλειστούς και ένα με ανοιχτούς;
Και όποτε κλείνει ή ανοίγει ένας να περνάει απ' το ένα αρχείο στο άλλο;
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

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

Δημοσίευσηαπό clepto » 04 Οκτ 2011, 00:32

θέλω ένα αρχείο για τους φακέλους που έχει δημιουργήσει με το πρόγραμμα ανεξαρτήτως αν είναι ανοιχτοί εκείνη την στιγμή ή όχι και ένα για τους ανοικτούς!
ανν αντιγράψω τον κώδικα και αλλάξω το αρχείο που θα τα καταγράφει δε θα είναι οκ;
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 » 04 Οκτ 2011, 13:45

clepto έγραψε:θέλω ένα αρχείο για τους φακέλους που έχει δημιουργήσει με το πρόγραμμα ανεξαρτήτως αν είναι ανοιχτοί εκείνη την στιγμή ή όχι και ένα για τους ανοικτούς!
ανν αντιγράψω τον κώδικα και αλλάξω το αρχείο που θα τα καταγράφει δε θα είναι οκ;

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

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

Δημοσίευσηαπό clepto » 04 Οκτ 2011, 13:52

θα είναι ανοικτός...

τι έχεις στο μυαλό σου;
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
Εκτύπωση

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

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