2016-04-04 25 views
0

Bir python çalıştıran bir linux makinesini kullanıyorum 2.7. Ben örneğin, (değil bu makineden) dosyanın tam yolunu üst dizini almak için os.path.dirname() kullanmak istiyorum:
C:\\documents and settings\\Dan\\yada\\1.txt =>
C:\\documents and settings\\Dan\\yadaWindows yolunda os.path.dirname kullanımı

Ama sürpriz Çıkacaksınız, bunun yerine boş bir dize olsun.

Herkes neden ve nasıl çözüleceğini açıklayabilir mi? yerine

+3

Linux ac biliyor: \\ – Funonly

+0

Nasıl çağırdığını göstermek için hiçbir kod ile oldukça zor tahmin et c. os.path.exists (path_you_passed_to_dirname) 'nin sonucu nedir? Windows makinesine nasıl bağlandınız? Burada yanlış olabilecek çok fazla unaddressed şey var. –

+0

@Simon Daha doğru, linux, 'C: \ belgeler ve ayarlar \ Dan \ yada \ 1.txt' geçerli bir dosya adıdır (olduğu gibi, bir'/home/dan/C: \ document ve settings \ 'e sahip olabilirsiniz) Dan \ yada \ 1.txt'. Yani 'os.path.dirname (" C: \\ belgeler ve ayarlar \\ Dan \\ yada \\ 1.txt ")' '' '' '(boş dize) olarak sadece bir dosya adı, tam olarak aynı şekilde os.path.dirname ("1.txt") 'de' '' '' dir. – gregmac

cevap

3

Kullanım ntpath:

>>> import ntpath 
>>> ntpath.dirname('C:\\documents and settings\\Dan\\yada\\1.txt') 
'C:\\documents and settings\\Dan\\yada' 

the documentation Gönderen: farklı işletim sistemleri, farklı yol adı teamülleri vardır

, standart kütüphanede bu modülün çeşitli sürümleri vardır. os.path modülü her zaman Python işletim sistemi için uygun olan yol modülüdür ve bu nedenle yerel yollar için kullanılabilir. Bununla birlikte, farklı biçimlerden birinde her zaman yolunu değiştirmek isterseniz, tek tek modülleri de içe aktarabilir ve kullanabilirsiniz. Hepsi aynı arayüze sahip:

UNIX tarzı yolları için
  • posixpath
  • , Windows yolları için
  • ntpath
  • eski tarz için
  • macpath MacOS yolları OS/2 EMX yolları için
  • os2emxpath
İlgili konular