2012-04-05 12 views
5

dosyası 'file1.txt' yolunu /home/bentley4/Desktop/sc/file1.txt benim geçerli çalışma dizini /home/bentley4os.path.abspath ('file1.txt')

import os 
os.path.abspath('file1.txt') 

olduğunu Say Say doğru yolu döndürmez /home/bentley4/file1.txt

os.path.exists('file1.txt') 

döner False döndürür. Ben

os.path.abspath('file_that_does_not_exist.txt') 

yaparsanız Bu /home/bentley4/file_that_does_not_exist.txt döndürür Ama yine, bu doğru değil. Dosya bilgisayarımda mevcut değil. Şu anda çalışmakta olduğum herhangi bir dizinden doğru mutlak yolu elde etmenin bir yolu var mı? (Kenara yeni fonksiyonunun tanımlanması)

Yani bu sadece eserlerini Var olan dosya olarak ya da dizin bir dizinde veya daha ileri o dosyanın dizinin yolundan aynı dizinde ben?

+3

, 'os.path.abspath' sadece çalışmalıdır. Os.getcwd() 'ne döndürüyor? ... Oh, diyorum, bekle, sen/home/bentley4 içinde olduğunuzu söylüyorsun ve bir alt dizinindeki bir dosyayı bir şekilde bulmak için os.path.abspath'ı bekliyorsun ? Bunu yapmıyor. – torek

+0

Ne yapmaya çalışıyorsunuz? Mevcut çalışma rehberinizin alt dizinlerinden herhangi birinde bir dosya bulmaya mı çalışıyorsunuz? –

cevap

11

os.path.abspath(filename) geçerli çalışma dizinden görüldüğü gibi mutlak bir yol döndürür. Dosyanın gerçekten var olup olmadığını kontrol etmez.

/home/bentley4/Desktop/sc/file1.txt mutlak yolunu istiyorsanız ve /home/bentley4 numaralı telefondan os.path.abspath("Desktop/sc/file1.txt")'u kullanmanız gerekir.

+2

Eh, os.path.isabs() 'kontrol ederek başlar. Ama bu durumda evet. – torek

1

abspath sadece mevcut dosyalar hakkında hiçbir şey kontrol etmez, bir yol oluşturur. Dokümanlar

:

çoğu platformlarda bu normpath eşdeğerdir (katılmak (os.getcwd(), yol)).

0

Yolu os.path.abspath(__file__) ile alacaksınız.

+0

Bu işe yaramıyor. os.path.abspath ('__ file1.txt__') os.path.abspath ('file1.txt') ile aynı davranır. – Bentley4

+3

@ Bentley4 os.path.abspath ('file1.txt') her zaman Python'un yaşadığı sürece os.path.abspath ('file1.txt') ile aynı davranacaktır. – JSmyth

0

Sorun, daha önce cwd'un os.chdir (else_path) kullanılarak değiştirilmiş olması ve hala geçerli yürütme bağlamında yüklenmesidir. böylece düzeltme işlemi, bir başka_kullanımdaki görev tamamlandıktan sonra orijinal yolu geri yüklemelidir.
Örnek:

oldukça meraklı
original_path = os.getcwd() 
    os.chdir(another_path) 
    # here perform some operation over another_path 
    os.chdir(original_path) # here is the restore of the original path 
İlgili konular