2015-09-29 25 views
6

BuPython'da göreceli yollar nasıl giderilir?

projectfolder/fold1/fold2/fold3/script.py 

gibi Dizin yapısı şimdi ben edebilmek istiyorum Yani temelde

fold1/fold_temp/myfile.txt 

orada bir dosyanın komut satırı bağımsız değişken olarak bir yol script.py veriyorum var Bu yolla İşte

../../fold_temp/myfile.txt 

>>python somepath/pythonfile.py -input ../../fold_temp/myfile.txt 

sorun yolu vermek ben bu yüzden karar vermek gerekir tam yolunu veya göreli yolu verilmiş ve bu I dayalı olabilir ki Mutlak yol oluşturabilmelidir.

Zaten yol ile ilgili işlevler hakkında bilgi sahibi oldum.

Question 1

Question 2

Referans soruları kısmi cevap veriyoruz ama onlarla sağlanan işlevleri kullanarak tam yolunu inşa etmek nasıl bilmiyorum. Göreli ve mutlak yolları birbirinden ayırt etmek gerek kalmaz, sadece bunların herhangi birisinin normalleştirmek, Basiscally Eğer çalışabilirsiniz mutlak bir yol herhangi bir yolu dönüştürür);

+0

Kullanıcı doğru bir yoldan geçerse, neden mutlak veya göreli olup olmadığını önemsiyorsunuz? Python kesinlikle umursamıyor ve muhtemelen kullanıcın umursamıyor. – tripleee

+0

Olası bir kopyası [Python'da mutlak bir dosya yolu nasıl alınır] (https://stackoverflow.com/questions/51520/how-to-get-an-absolute-file-path-in-python) –

cevap

-1
import os 
dir = os.path.dirname(__file__) 
path = raw_input() 
if os.path.isabs(path): 
    print "input path is absolute" 
else: 
    path = os.path.join(dir, path) 
    print "absolute path is %s" % path 

Kullanım os.path.isabs, seni giriş yolu mutlak ya da göreli ise o göreceli ise o zaman, yargıç Python3 için mutlak

+1

Bu şekilde bir yol olarak bir yol dosyası olarak komut dosyası için bir yol olacak, soruya göre bunu vermek istemiyorum bir yol .. – niyant

+0

Similer çözümü söz konusu bağlantılarda var ... giriş dosyanız aynı dizinde veya aynı alt – niyant

+0

'os.path.join (dir, yol)' olan bir alt dizinde ise gayet iyi. zaten "yol", "yol" mutlak ise (Pyhon 3.6 üzerinde test edilmiştir). – Mitar

12

, bu istediğini yapmalıyım os.path.abspath deneyin Bu fonksiyon

+1

küçük örnek ... bir bağlantıdan daha iyidir; Aksi takdirde, iyi bir cevap ve yukarı-oy olurdu ... – IAbstract

1

dönüştürmek için os.path.join kullanmak symlinks ve .. bileşenleri çözmek için pathlib resolve işlevselliğini kullanabilir .

Bir Path nesnesine sahip olmanız gerekir, ancak str ve Path arasında dönüştürme yapmak çok basittir.

Python3'ü kullanan herkesin 'u ve dağınık uzun işlev adlarını düşürmesini ve pathlib Yol nesnelerini kullanmasını tavsiye ederim.