2010-07-24 17 views
11

Sto lavorando con un python per la programmazione Macbook. Quello che voglio sapere è come posso accedere ad alcuni file usando le funzioni di file di Python. Una ricerca su google mi ha fallito.Trovare l'indirizzo della directory di un file su un Mac

Ad esempio, Windows potrebbe essere qualcosa di simile:

f = open(r'C:\text\somefile.txt') 

Come potrei accedere a qualcosa da una cartella salvata sul desktop di un Mac?

risposta

9

Il desktop è solo una sottodirectory della home directory dell'utente. Perché quest'ultimo non è corretto, utilizzare qualcosa come os.path.expanduser per mantenere il codice generico. Ad esempio, per leggere un file chiamato somefile.txt che risiede sul desktop, utilizzare

import os 
f = open(os.path.expanduser("~/Desktop/somefile.txt")) 

Se si desidera che questo per essere portabile su sistemi operativi, è necessario scoprire dove la directory del desktop si trova su ciascun sistema separatamente.

+0

_ "Se vuoi che questo sia portatile tra i sistemi operativi" _ ... devi anche correggere i separatori di percorso, ad esempio da '/' a ' Se vai su Windows, guarda la mia risposta. –

4
f = open (r"/Users/USERNAME/Desktop/somedir/somefile.txt") 

o meglio ancora

import os 
f = open (os.path.expanduser("~/Desktop/somedir/somefile.txt")) 

Perché su bash (la shell di default su Mac Os X) ~/ rappresenta directory home dell'utente.

+0

“Perché su sistemi * nix' ~/'rappresenta la directory home dell'utente.” - Questo è sbagliato, è solo una convenzione usata da shell popolari come bash. Cercando di aprire '~/somefile.txt' cercheremo una directory chiamata' ~ 'all'interno della directory corrente. – Philipp

+0

corretti, grazie –

+1

Non è corretto-'apen' non si espande mai' ~ 'e non usa mai una shell. Prova 'open (" ~/somefile.txt "," w ")' -non creerà il file a meno che tu non abbia una directory chiamata '~'. – Philipp

0

si sta lavorando su un Mac così percorsi come "a/b/c.text" vanno bene, ma se si utilizza di Windows in futuro, dovrete cambiare tutto il '/'-'\'. Se si vuole essere più portatile e indipendente dalla piattaforma fin dall'inizio, si utilizza meglio il os.path.join dell'operatore:

import os 

desktop = os.path.join(os.path.expanduser("~"), "Desktop") 
filePath = os.path.join(desktop, "somefile.txt") 

f = open(filePath) 
Problemi correlati