path leggere - Python-Estrai il percorso della cartella dal percorso del file




contenuto directory (5)

Usa il modulo os.path :

>>> import os
>>> existGDBPath = r'T:\Data\DBDesign\DBDesign_93_v141b.mdb'
>>> wkspFldr = os.path.dirname(existGDBPath)
>>> print wkspFldr 
'T:\Data\DBDesign'

Puoi andare avanti e assumere che se hai bisogno di fare una sorta di manipolazione dei nomi dei file è già stato implementato in os.path . In caso contrario, probabilmente sarà necessario utilizzare questo modulo come elemento di base.

AGGIORNARE

Si dovrebbe considerare l'utilizzo di pathlib per il nuovo sviluppo. Si trova nello stdlib per Python3.4, ma è disponibile su PyPI per le versioni precedenti. Questa libreria fornisce un metodo più orientato agli oggetti per manipolare i percorsi <opinion> ed è molto più facile leggere e programmare con </opinion> .

>>> import pathlib
>>> existGDBPath = pathlib.Path(r'T:\Data\DBDesign\DBDesign_93_v141b.mdb')
>>> wkspFldr = existGDBPath.parent
>>> print wkspFldr
Path('T:\Data\DBDesign')

Ho visto questa soluzione ma non per Python in particolare.

Mi piacerebbe ottenere solo il percorso della cartella dal percorso completo di un file.

Ad esempio T:\Data\DBDesign\DBDesign_93_v141b.mdb e vorrei ottenere solo T:\Data\DBDesign (escluso \DBDesign_93_v141b.mdb ).

Ho provato qualcosa del genere:

existGDBPath = r'T:\Data\DBDesign\DBDesign_93_v141b.mdb'
wkspFldr = str(existGDBPath.split('\\')[0:-1])
print wkspFldr 

ma mi ha dato un risultato come questo:

['T:', 'Data', 'DBDesign']

che non è il risultato che richiedo (essendo T:\Data\DBDesign ).

Qualche idea su come posso ottenere il percorso del mio file?

Grazie.


Ecco il codice:

import os
existGDBPath = r'T:\Data\DBDesign\DBDesign_93_v141b.mdb'
wkspFldr = os.path.dirname(existGDBPath)
print wkspFldr # T:\Data\DBDesign

Il sottomodulo os.path ha una funzione proprio per questo compito.

import os
os.path.dirname('T:\Data\DBDesign\DBDesign_93_v141b.mdb')

Eri quasi lì con il tuo uso della funzione split . Hai solo bisogno di unirti alle stringhe, come segue.

>>> '\\'.join(existGDBPath.split('\\')[0:-1])
'T:\\Data\\DBDesign'

Anche se, per fare ciò, raccomando di usare la funzione os.path.dirname , devi solo passare la stringa e farà il lavoro per te. Poiché sembra che tu sia su Windows, considera anche l'uso della funzione abspath . Un esempio -

>>> os.path.dirname(os.path.abspath(existGDBPath))
'T:\\Data\\DBDesign'

Se si desidera sia il nome del file che il percorso della directory dopo essere stati divisi, è possibile utilizzare la funzione os.path.split che restituisce una tupla, come segue.

>>> os.path.split(os.path.abspath(existGDBPath))
('T:\\Data\\DBDesign', 'DBDesign_93_v141b.mdb')

C'è un'altra differenza qui che non è menzionata in precedenza.

subprocess.Popen esegue il <comando> come sottoprocesso. Nel mio caso, ho bisogno di eseguire il file <a> che deve comunicare con un altro programma, <b>.

Ho provato il sottoprocesso e l'esecuzione è andata a buon fine. Tuttavia <b> non ha potuto comunicare con <a>. Tutto è normale quando eseguo entrambi dal terminale.

Ancora uno: (NOTA: kwrite si comporta in modo diverso dalle altre applicazioni Se provi il sotto con Firefox, i risultati non saranno gli stessi.)

Se provi os.system("kwrite") , il flusso del programma si blocca fino a quando l'utente non chiude kwrite. Per superare ciò ho provato invece os.system(konsole -e kwrite) . Questo programma temporale continuava a scorrere, ma kwrite divenne il sottoprocesso della console.

Chiunque esegua il kwrite non è un sottoprocesso (cioè nel monitor di sistema deve apparire al limite più a sinistra dell'albero).





python file path folder extract