Как заставить Python знать, в каком каталоге вы работаете

У меня есть программа, которую я написал, которая просматривает все файлы в каталоге и ищет файлы с флагом, а затем вводит их в другую программу. Это прекрасно работает, единственное, что я пытаюсь сделать сейчас, это поместить скрипт в одно место на коробке, а затем заставить его узнать, что каталог, в котором я сейчас нахожусь, является рабочим каталогом. В настоящее время все, что я делаю, - это помещаю скрипт в любой каталог, в котором я работаю, и просто вызываю его оттуда, но это утомительно и требует от меня постоянного выполнения сценария.

Я просто надеюсь, что есть немного более элегантный способ сделать это? Любая помощь будет оценена.

4 ответа

Решение

Как насчет

import os

loc = os.getcwd()

Объект __file__ может возвращать такую ​​информацию:

import os

os.path.dirname(__file__)

Если вам удобно передавать рабочий каталог в качестве аргумента сценария, будет работать следующий подход.

#!/usr/bin/env python
import sys
import os

workingDir = sys.argv[1]
os.chdir (workingDir)

# Your code here

Похоже, идеальное использование для os.walk() Пример из справки будет хорошей отправной точкой:

import os
from os.path import join, getsize
for root, dirs, files in os.walk('python/Lib/email'):
    print root, "consumes",
    print sum(getsize(join(root, name)) for name in files),
    print "bytes in", len(files), "non-directory files"
    if 'CVS' in dirs:
        dirs.remove('CVS')  # don't visit CVS directories
Другие вопросы по тегам