假設我有一個名爲「Files」的文件夾,其中包含許多不同的python文件。Python:你如何遍歷文件名列表並導入它們?
path = "C:\Python27\Files"
os.chdir(path)
filelist = os.listdir(path)
print(filelist)
這給了我一個包含所有文件夾「文件」在Python文件的名稱的列表。
我想將這些文件中的每一個導入一個更大的python程序,一次一個,作爲一個模塊。做這個的最好方式是什麼?
假設我有一個名爲「Files」的文件夾,其中包含許多不同的python文件。Python:你如何遍歷文件名列表並導入它們?
path = "C:\Python27\Files"
os.chdir(path)
filelist = os.listdir(path)
print(filelist)
這給了我一個包含所有文件夾「文件」在Python文件的名稱的列表。
我想將這些文件中的每一個導入一個更大的python程序,一次一個,作爲一個模塊。做這個的最好方式是什麼?
添加__init__.py
到文件夾,也可以將文件作爲from Files import *
小鬼模塊具有共同dynmically導入模塊兩種功能。
import imp
import traceback
filelist = [os.path.splitext(x)[0] for x in filelist] # name of the module w/o extension
for f in filelist: # assume files in directory d
fp, pathname, description = imp.find_module(f, [d])
try:
mod = imp.load_module(x, fp, pathname, description)
except:
print(traceback.format_exc())
finally:
# must always close the file handle manually:
if fp:
fp.close()
:
def load_modules(filelist):
modules = []
for name in filelist:
if name.endswith(".py"):
name = os.path.splitext(name)[0]
if name.isidentifier() and name not in sys.modules:
try:
module = __import__(name)
modules.append(module)
except (ImportError, SyntaxError) as err:
print(err)
return modules
考慮到文件夾轉換成一個包,否則,你可以使用'importlib'模塊。 –
是的,這通常是一個壞主意。請參閱關於打包的文檔:http://docs.python.org/2/tutorial/modules.html#packages – reptilicus