2017-03-23 18 views
7

Python'da yeniyim. Ve bugün bir şey beni kafa karıştırıyor. c:\python\ yolunun altında, birkaç kat vardır. Bu yolu altındaki piton komut dosyası düzenleyebilir ve kod çalıştırmasına:os.path.isdir() kullanırken './' ve '../' arasındaki fark nedir?

for dir_name in os.listdir("./"): 
     print dir_name 
     print os.path.isdir(dir_name) 

O yazdırır:

Daily 
True 
renafile.py 
False 
script 
True 

Ama yolun C:\python\ altında kat Daily komut dosyası ve çalıştırma kodu koyduğunuzda :

for dir_name in os.listdir("../"): 
     print dir_name 
     print os.path.isdir(dir_name) 

O yazdırır:

Daily 
False 
renafile.py 
False 
script 
False 

Aradaki fark var mı?

+0

Not:

print os.path.isdir(os.path.join("../", dir_name)) 

Sen için kodunuzu değiştirmek isteyebilirsiniz ben python2.7 kullanıyorum –

cevap

9

Yanlış bir şekilde döndürülüyordu çünkü bir klasör adıyla isdir dediğinizde, python geçerli dizinde bu klasörü arar - mutlak bir yol veya göreceli bir yol sağlamadığınız sürece. Eğer "../" dosyaları listeleme olduğundan

, bunu böyle isdir çağırmalıdır:

list_dir_name = "../" 
for dir_name in os.listdir(list_dir_name): 
    print dir_name 
    print os.path.isdir(os.path.join(list_dir_name, dir_name)) 
+2

Sadece '+' yerine 'os.path.join' kullanılmasını öneririm. –

+0

Çalışıyor! Teşekkürler! –

+0

@AshishNitinPatil iyi bir çağrı, snippet'i değiştirdim :) L.Bes, yardımcı olabileceğime sevindim :) –

İlgili konular