青青草免费线看线看|啊在车上停不下来了|国产少女免费观看电视剧|仑乱88MAV|精品老司机在线观看视频|国产一区二区三区高清免费视频|在线观看免费777av

python怎么導(dǎo)入文件夾?

在Python編程中 , 有時(shí)候我們需要導(dǎo)入一個(gè)文件夾下的所有Python文件,這時(shí)候就可以用到Python的import語句 。本文將從多個(gè)角度對如何導(dǎo)入文件夾進(jìn)行分析 。

python怎么導(dǎo)入文件夾?


一、將文件夾添加到sys.path
在Python中 , 可以通過將要導(dǎo)入的文件夾的路徑添加到sys.path來導(dǎo)入文件夾 。在Python腳本中可以這樣寫:
import sys
sys.path.append('/path/to/folder')
這樣做的好處是可以方便地在代碼中引用文件夾下的Python模塊 。但是,這種方法只適用于臨時(shí)的導(dǎo)入,重啟Python解釋器后sys.path會(huì)重置為默認(rèn)值,之前添加的文件夾路徑會(huì)被刪除 。
二、使用importlib.import_module導(dǎo)入文件夾
導(dǎo)入文件夾的另一種方法是使用importlib.import_module 。這個(gè)方法可以動(dòng)態(tài)地從一個(gè)字符串名稱導(dǎo)入一個(gè)模塊或者包 。在Python腳本中可以這樣寫:
import os
import importlib.util
def import_all_py_module_in_folder(folder_path):
''' import all py file in folder as a module
Args:
folder_path: the folder need to import
Returns:
a module contains the all modules in folder
'''
folder_name = os.path.basename(folder_path)
module_name = folder_name.replace('-', '_')
spec = importlib.util.spec_from_loader(module_name,
loader=None,
【python怎么導(dǎo)入文件夾?】 origin=folder_path,
submodule_search_locations=[])
module = importlib.util.module_from_spec(spec)
spec.loader.exec_module(module)
for root, dirs, files in os.walk(folder_path):
for file in files:
if file.endswith('.py') and not file.startswith('__'):
py_module_name = file[:-3]
py_module_path = os.path.join(root, file).replace(
folder_path, '').strip('/\')
py_module_path = py_module_path.replace('/', '.').replace('\\', '.')
py_module_full_path = os.path.join(folder_path, py_module_path)
py_module_spec = importlib.util.spec_from_file_location(
py_module_name, py_module_full_path)
py_module = importlib.util.module_from_spec(py_module_spec)
py_module_spec.loader.exec_module(py_module)
setattr(module, py_module_name, py_module)
return module
這段代碼可以將一個(gè)文件夾下的所有Python文件作為一個(gè)模塊導(dǎo)入,導(dǎo)入后可以使用文件夾名作為模塊名來訪問模塊中的Python文件和函數(shù) 。
三、使用pkgutil.walk_packages導(dǎo)入包
在Python中,不僅可以導(dǎo)入一個(gè)文件夾下的所有Python文件,還可以導(dǎo)入一個(gè)包下的所有Python模塊 。使用pkgutil.walk_packages函數(shù)即可實(shí)現(xiàn) 。在Python腳本中可以這樣寫:
import pkgutil
def import_all_py_module_in_package(package_path):
''' import all py module in packagePath as a package
Args:
package_path: the package need to import
Returns:
a package contains the all modules in packagePath
'''
package_name = os.path.basename(package_path)
module_name = package_name.replace('-', '_')
module = importlib.import_module(module_name)
package = module
prefix = module.__name__ + '.'
for importer, modname, ispkg in pkgutil.walk_packages(module.__path__, prefix=prefix):
if not ispkg:
module = importer.find_module(modname).load_module(modname)
setattr(package, modname.split('.')[-1], module)
return package
這段代碼可以將一個(gè)包下的所有Python模塊作為一個(gè)包導(dǎo)入,導(dǎo)入后可以使用包名訪問包中的Python文件和函數(shù) 。
摘要:本文詳細(xì)介紹了Python中導(dǎo)入文件夾的三種方法:將文件夾添加到sys.path、使用importlib.import_module導(dǎo)入文件夾和使用pkgutil.walk_packages導(dǎo)入包,并對每種方法進(jìn)行了詳細(xì)的分析和說明 。
關(guān)鍵詞:Python、導(dǎo)入文件夾、sys.path、importlib.import_module、pkgutil.walk_packages

    猜你喜歡