2010-07-24 16 views
11

Macbook programlama python ile çalışıyorum. Bilmek istediğim, Python'un dosya işlevlerini kullanarak belirli dosyalara nasıl erişebileceğim. Bir google araması beni başarısız oldu. ÖrneğinMac'te bir dosyanın dizin adresini bulma

Windows böyle bir şey olurdu:

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

Nasıl bir Mac Masaüstü kaydedilmiş bir klasörden şey erişmek ki?

cevap

9

Masaüstü, kullanıcının giriş dizininin yalnızca bir alt dizini. İkincisi sabit olmadığından, kodu genel tutmak için os.path.expanduser gibi bir şey kullanın. Örneğin, masaüstünüzde bulunan somefile.txt adlı bir dosya okumak bu işletim sistemleri arasında taşınabilir olmasını istiyorsanız

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

kullanmak için, masaüstü dizini ayrı ayrı her sistemde nerede bulunduğunu öğrenmek zorundayız. Bir Mac üzerinde çalışıyoruz

+0

_ "Eğer bu işletim sistemlerinde taşınabilir olmak istiyorsanız" _ ... ayrıca yol ayırıcılarını düzeltmeniz gerekiyor, örneğin '/' - dan \ 'Windows'a giderseniz cevabımı görün. –

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

veya daha iyi

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

Çünkü bash (Mac Os X varsayılan kabuk) ~/ kullanıcının ana dizinini temsil üzerinde.

+0

- Bu yanlış,: Eğer daha taşınabilir ve platform agnostik baştan olmak istiyorsanız, daha iyi os.path.join operatörünü kullanabilirsiniz Bu sadece bash gibi popüler kabuklar tarafından kullanılan bir kongre. '~/Somefile.txt' dosyasını açmaya çalışırken mevcut dizinin içinde '~' adlı bir dizin bulunacaktır. – Philipp

+0

düzeltildi, teşekkürler –

+1

Düzeltilmedi — 'open 'asla' '' genişler ve asla bir kabuk kullanır. Açmayı deneyin ("~/somefile.txt", "w") '' ~ 'adlı bir diziniz olmadığı sürece dosyayı oluşturamazsınız. – Philipp

0

yüzden "a/b/c.text" gibi yollar iyidir, ama İleride Windowskullanırsanız, tüm '/''\' değiştirmek gerekecek. “` ~/`Kullanıcının ana dizinini temsil Çünkü * nix sistemlerdeki.”

import os 

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

f = open(filePath) 
İlgili konular