2015-07-07 4 views
25

Я знаю, что я могу использовать это, чтобы получить полный путь к файлуполучить имя каталога сценария - Python

os.path.dirname(os.path.realpath(__file__)) 

Но я хочу только имя папки, моя сума в SO, если у меня есть my_script.py. и он находится по адресу

/home/user/test/my_script.py 

Я хочу вернуть «тест» Как я могу это сделать?

Благодаря

+0

Ответ здесь. [link] (http://stackoverflow.com/questions/5137497/find-current-directory-and-files-directory) – GAVD

ответ

36
import os 
os.path.basename(os.path.dirname(os.path.realpath(__file__))) 

Сломался:

currentFile = __file__ # May be 'my_script', or './my_script' or 
         # '/home/user/test/my_script.py' depending on exactly how 
         # the script was run/loaded. 
realPath = os.path.realpath(currentFile) # /home/user/test/my_script.py 
dirPath = os.path.dirname(realPath) # /home/user/test 
dirName = os.path.basename(dirPath) # test 
+7

+1 'os.path.basename (os. getcwd()) 'также работает, если вы заботитесь только о директории, из которой вы запускаете скрипт. – Magicsowon

54
>>> import os 
>>> os.getcwd() 
+6

Это вернет '/ home/user/test /', а не 'test'. – Evert

+2

На самом деле, если вы должны были вызвать ваш скрипт из другого каталога ('cd/home/user; python test/my_script.py'), он даже не вернет его. Он вернет каталог, в котором вы находитесь (в примере: '/ home/user /') – bytesized

+2

@bytesized. Но ОП запросил, чтобы получить * текущий рабочий каталог *, что означает текущий каталог, в котором вы находитесь, когда вы запускали переводчик. Так 'os.getcwd' делает именно это. – greatwolf