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

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

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

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

Δημοσίευσηαπό sokoban4ever » 19 Ιαν 2012, 04:54

clepto έγραψε:αν είναι mounted το έχω βρει...θέλω να δω αν κάποιο απο τα αρχεία του χρησιμοποιείται ώστε αν χρησιμοποιείται να μην μπορώ να αποπροσαρτήσω το partition

όπως κάνεις με το mount και το subprocess κάνε και με το lsof
απλά στην lsof βάλε το mount point(αν πρόκειτε για ολάκερο δίσκο που έκανες mount) η το partition για παράμετρο
πχ
Κώδικας: Επιλογή όλων
lsof /media/MyDisk
ή
lsof /dev/sda6

αν δεν σου βγάλει κάποιο κείμενο (δηλαδή τίποτα )
τότε κανένα αρχείο δεν χρησιμοποείται απο το δίσκο η από το partition
αλλιώς
κάποιο αρχείο θα χρησιμοποείται απο το δίσκο η από το partition
και θα σου βγάλει κείμενο αυτής της μορφής
Κώδικας: Επιλογή όλων
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
totem 3992 sokoban cwd DIR 8,1 0 19494 /media/DISK
totem 3992 sokoban 23u REG 8,1 3356606 19495 /media/DISK/song.ogg


Δηλαδή με Python

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

import subprocess
DiskPathOrPartitionPath = "/media/DISK"
Cmd = "lsof"

lsof = subprocess.Popen( [ Cmd , DiskPathOrPartitionPath ],stdout = subprocess.PIPE)
lsofResult = lsof.communicate()[0]

if len(lsofResult) == 0 :
DiskIsBusy = False
else:
DiskIsBusy = True

if DiskIsBusy:
#foo
else:
#bar


Ελπίζω να βοήθησα :)

pmav99 έγραψε:Διόρθωσε με αν κάνω λάθος, αλλά σε ένα mounted partition με ανοικτά αρχεία, δε θα αποτύχει το umount? Αν ναι, με ένα try except κάνεις τη δουλειά σου.

Kαλή ιδέα
αλλά έτσι αναγκαστικά θα κάνει umount το partition...
και υπάρχει η περίπτωση που θέλει μονάχα να δει αν χρησιμοποιούνται ή όχι αρχεία απο το partition
Θέλουμε και μπορούμε να έχουμε μια καλύτερη ζωή και όσο θα ζούμε θα προσπαθούμε να την αποκτήσουμε ακόμα και αν πεθάνουμε προσπαθώντας, και αν κάποια στιγμή λιγίσουμε έχουμε το επίπεδο να πούμε κουράστηκα λίγο να ,να ξαποστάσουμε , ώστε να συνεχίσουμε πάλι δυνατοί ξανά.

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

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

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

ευχαριστώ πολύ sokoban4ever
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 » 20 Ιαν 2012, 00:42

έχω αυτό
Κώδικας: Επιλογή όλων
item = self.dexistingfoldersListWidget.currentItem()
foldername = item.text()
self.delete_folder = home + '/' + foldername
self.delete_enfolder = home + '/' + '.' + foldername
if self.is_mounted() is False:
if self.dmpointdCheckBox.isChecked():
try:
shutil.rmtree(self.delete_folder, True)
except IOError:
pass
if self.dencryptedfolder.isChecked():
try:
shutil.rmtree(self.delete_enfolder, True)
except IOError:
pass

και ενώ στο πρώτο shutil είναι οκ στο δεύτερο παίρνω
Κώδικας: Επιλογή όλων
Traceback (most recent call last):
File "./vault.py", line 261, in delete
shutil.rmtree(self.delete_enfolder, True)
File "/usr/lib/python2.7/shutil.py", line 238, in rmtree
fullname = os.path.join(path, name)
File "/usr/lib/python2.7/posixpath.py", line 68, in join
elif path == '' or path.endswith('/'):
AttributeError: 'QString' object has no attribute 'endswith'
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 » 20 Ιαν 2012, 01:09

Το string που έχεις είναι τύπου QString. Τα Qstring δεν έχουν τις μεθόδους που έχουν τα str. Πρέπει να το μετατρέψεις σε str:
Κώδικας: Επιλογή όλων
pilias@ilias-pc:~$ python
Python 2.7.2+ (default, Oct 4 2011, 20:03:08)
[GCC 4.6.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from PyQt4.QtCore import QString
>>> a_string = QString('text')
>>> print type(a_string)
<class 'PyQt4.QtCore.QString'>
>>> a_string.endswith('t')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'QString' object has no attribute 'endswith'
>>> a_string = str(a_string)
>>> print type(a_string)
<type 'str'>
>>> a_string.endswith('t')
True
>>>

Και επειδή πιθανόν θα αντιμετωπίσεις κάποια προβληματάκια με τα strings στην python2 στην αρχή κάνε και ένα:
Κώδικας: Επιλογή όλων
from __future__ import unicode_literals
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

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

Δημοσίευσηαπό medigeek » 20 Ιαν 2012, 01:16

Το QString με το string του python (δυστυχώς) διαφέρουν:
Δοκίμασε με το str():
Κώδικας: Επιλογή όλων
self.delete_enfolder = str(home + '/' + '.' + foldername)
print("home type: %s" % (type(home)))
print("delete_enfolder type: %s" % (type(self.delete_enfolder)))

ή με το .__str__():
Κώδικας: Επιλογή όλων
self.delete_enfolder = home + '/' + '.' + foldername..__str__()
print("home type: %s" % (type(home)))
print("delete_enfolder type: %s" % (type(self.delete_enfolder)))


Ένα από αυτά θα πρέπει να δουλέψει και το print να δείξει "<type 'unicode'>". :)
To home είναι string;

Με πρόλαβε ο Ηλίας :P
Κύπριος; Κόπιασε στο 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 » 25 Ιαν 2012, 23:14

Κώδικας: Επιλογή όλων
dirFoo\
__init__.py
Foo.py
dirBar\
__init__.py
Bar.py

Κάποιος όμορφος τρόπος για να κάνω import το Foo.py από το Bar.py;
Έχω δει για τα relative imports αλλά δεν μπορώ να το κάνω να δουλέψει.
Πως θα έπρεπε να είναι η σύνταξη;
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

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

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

http://stackoverflow.com/questions/7285 ... wer-465129
Αν κατάλαβα καλά, πρέπει να εγκαταστήσεις το module (setup.py install).

Bar.py:
Κώδικας: Επιλογή όλων
import dirFoo.Foo
Foo.somedef()


Αλλιώς πρέπει να προσθέσεις το module path στο sys.path:
έγραψε:>>> import sys
>>> sys.path
['', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-linux2', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/home/savvas/.local/lib/python2.7/site-packages', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages/PIL', '/usr/lib/python2.7/dist-packages/gst-0.10', '/usr/lib/python2.7/dist-packages/gtk-2.0', '/usr/lib/pymodules/python2.7', '/usr/lib/python2.7/dist-packages/ubuntu-sso-client', '/usr/lib/python2.7/dist-packages/ubuntuone-client', '/usr/lib/python2.7/dist-packages/ubuntuone-control-panel', '/usr/lib/python2.7/dist-packages/ubuntuone-couch', '/usr/lib/python2.7/dist-packages/ubuntuone-installer', '/usr/lib/python2.7/dist-packages/ubuntuone-storage-protocol']
Κύπριος; Κόπιασε στο 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 » 25 Ιαν 2012, 23:57

Οπότε μια λύση θα ήταν αυτή:

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

try:
from dirFoo import Foo
except ImportError:
import sys
sys.path.append('..')
import Foo
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

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

Δημοσίευσηαπό medigeek » 26 Ιαν 2012, 03:46

Είναι για testing; Γιατί δεν φτιάχνεις ένα test.py στο root;

Κώδικας: Επιλογή όλων
main.py
test.py
dirFoo\
__init__.py
Foo.py
dirBar\
__init__.py
Bar.py
Κύπριος; Κόπιασε στο 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 » 26 Ιαν 2012, 08:39

Χρειάζεται εξωτερικό launcher. Aυτή η απάντηση είναι η σωστή, ενώ γίνεται να το κάνεις και έτσι. To dot notation μπορεί να χρησιμοποιηθεί μόνο στο εσωτερικό του πακέτου.
pmav99
seniorTUX
seniorTUX
 
Δημοσιεύσεις: 574
Εγγραφή: 05 Ιούλ 2008, 14:29
Εκτύπωση

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

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