سؤال

كيف يمكنني العثور على دليل تم استيراد الوحدة النمطية من، حيث يحتاج إلى تحميل ملف بيانات موجود في نفس الدليل.

تعديل:

الجمع بين العديد من الإجابات:

module_path = os.path.dirname(imp.find_module(self.__module__)[1])

حصلت لي ما أردت

هل كانت مفيدة؟

المحلول

إذا كنت ترغب في وحدات الدليل عن طريق تحديد module_name كسلسلة أي دون استيراد الوحدة في الواقع ثم استخدام

def get_dir(module_name):
    import os,imp
    (file, pathname, description) = imp.find_module(module_name)
    return os.path.dirname(pathname)

print get_dir('os')

انتاج:

C:\Python26\lib


foo.py.

def foo():
    print 'foo'

bar.py.

import foo
import os
print os.path.dirname(foo.__file__)
foo.foo()

انتاج:

C:\Documents and Settings\xxx\My Documents
foo

نصائح أخرى

هذا سيعمل:

yourmodule.__file__

وإذا كنت ترغب في العثور على الوحدة النمطية تم استيراد كائن من:

myobject.__module__

الطريق إلى ملف الوحدة النمطية في module.__file__. وبعد يمكنك استخدام ذلك مع os.path.dirname للحصول على الدليل.

باستخدام وحدة إعادة كمثال:

>>> import re
>>> path = re.__file__
>>> print path
C:\python26\lib\re.pyc
>>> import os.path
>>> print os.path.dirname(os.path.abspath(path))
C:\python26\lib

لاحظ أنه إذا كانت الوحدة النمطية في دليل عملك الحالي ("CWD")، فستحصل على مسار نسبي foo.py. وبعد أنا أجعلها عادة الحصول على الطريق المطلق على الفور في حالة تغيير CWD قبل استخدام مسار الوحدة النمطية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top