Как заставить Python знать, в каком каталоге вы работаете
У меня есть программа, которую я написал, которая просматривает все файлы в каталоге и ищет файлы с флагом, а затем вводит их в другую программу. Это прекрасно работает, единственное, что я пытаюсь сделать сейчас, это поместить скрипт в одно место на коробке, а затем заставить его узнать, что каталог, в котором я сейчас нахожусь, является рабочим каталогом. В настоящее время все, что я делаю, - это помещаю скрипт в любой каталог, в котором я работаю, и просто вызываю его оттуда, но это утомительно и требует от меня постоянного выполнения сценария.
Я просто надеюсь, что есть немного более элегантный способ сделать это? Любая помощь будет оценена.
4 ответа
Объект __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