 
View Full Version : Python - contenuto directory
Come si può memorizzare in una lista il contenuto di una directory Linux?
Grazie in anticipo
cdimauro
23-01-2014, 21:24
>>> import os
>>> os.listdir('D:/Emu')
['Amiga', 'MAME', 'OPENME!.TXT']
molto gentile,
è possibile però memorizzare in una lista?
cdimauro
23-01-2014, 23:17
listdir restituisce già una lista. :)
ma per memorizzare i valori in modo da riutilizzarli in seguito intendo
cdimauro
24-01-2014, 06:55
Lista = os.listdir('D:/Emu')
per verificare la presenza di un file in un determinato percorso in un sistema Unix cosa si può utilizzare?
cdimauro
29-01-2014, 20:50
>>> import os
>>> os.path.exists(r'D:\Emu\Amiga\WinUAE\WinUAE.exe')
False
>>> os.path.exists(r'D:\Emu\Amiga\UAE\WinUAE.exe')
True
Non c'è differenza fra Windows o Linux, a parte per i percorsi.
c' è il modo di sapere l' id di un' eventuale eccezione che viene sollevata?
cdimauro
29-01-2014, 22:10
Immagino che ti riferisca alla classe dell'eccezione. Intanto ti faccio vedere come ricavare l'istanza:
>>> try:
...   1 / 0
... except Exception as e:
...   print('Eccezione sollevata:', e)
...
('Eccezione sollevata:', ZeroDivisionError('integer division or modulo by zero',))
E se t'interessa la classe:
>>> try:
...   1 / 0
... except Exception as e:
...   print('Classe della eccezione sollevata:', e.__class__)
...
('Classe della eccezione sollevata:', <type 'exceptions.ZeroDivisionError'>)
Ma puoi anche decidere di intercettare solamente l'eccezione che t'interessa, e agire di conseguenza:
>>> try:
...   1 / 0
... except ZeroDivisionError:
...   print('Hai provato a dividere per zero, vero?')
...
Hai provato a dividere per zero, vero?
molto gentile, però non si può avere un id dell' eccezione?
cdimauro
29-01-2014, 22:36
Per id cosa intendi?
non so ad esempio
eccezione nr. 228
cdimauro
29-01-2014, 22:49
>>> try:
...   1 / 0
... except Exception as e:
...   print("L'id dell'eccezione e':", id(e))
...
("L'id dell'eccezione e':", 32354056)
Ma guarda che l'id non è univoco, e puoi ritrovartelo ripetuto altre volte, addirittura con oggetti diversi dall'eccezione.
Questo perché si tratta sostanzialmente del puntatore all'oggetto, convertito in valore intero.
Se non è adatto alle tue esigenze, dovresti spiegare meglio quello che ti serve.
davvero gentilissimo,
allora, quando si procede con una determinata operazione il contenuto di "e" se si solleva l' eccezione è molto esteso. Vorrei identificare quell' evento e dare una print contenuta
cdimauro
29-01-2014, 23:56
Potresti provare col solo nome della classe:
>>> try:
...   1 / 0
... except Exception as e:
...   print("La classe e':", e.__class__.__name__)
...
("La classe e':", 'ZeroDivisionError')
Ma se è ancora troppo lungo, l'unico modo è mappare le eccezioni che gestisci con un apposito numeretto. Quindi ti crei un dizionario dove metti come chiave la classe (o il nome della classe) e come valore il numero che gli vuoi associare. Col try: except: di cui sopra intercetti l'eccezione, estrai la sua classe, recuperi dal dizionario il numero che ti serve passandogli la classe (o il suo nome) come chiave, e a questo punto hai quello che ti serve.
approfitto della tua gentilezza,
puoi fare un veloce esempio?
cdimauro
30-01-2014, 17:24
>>> ExceptionToID = {ZeroDivisionError: 1, AttributeError: 2}
>>> try:
...     1 / 0
... except Exception as e:
...     print("ID dell'errore:", ExceptionToID[e.__class__])
("ID dell'errore:", 1)
>>> try:
...     (1).x
... except Exception as e:
...     print("ID dell'errore:", ExceptionToID[e.__class__])
("ID dell'errore:", 2)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.