python如何通过变量import其他文件夹的py文件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python如何通过变量import其他文件夹的py文件相关的知识,希望对你有一定的参考价值。
a="Test.Card"
card= __import__(a) 我想通过变量import其他文件夹里的py文件,应该如何写?如上代码Test是文件夹名称,Card是py文件名,这样写调用有问题。而放在同一个目录下
a="Card" card= __import__(a) 这样写是可以的。如何实现通过变量import不同文件夹的py文件?
read this:
# coding:utf-8import re
import sys
import pymysql
from importlib import import_module
#search the dirname of local_settings.py and import it
with open('manage.py') as f:
s = f.read()
d = re.search(r'DJANGO_SETTINGS_MODULE.*?,\\s*"(.+?)settings',s).group(1)
mo = import_module(d+'local_settings')
dbconf = mo.DATABASES.get('default')
config =
'host': dbconf.get('HOST'),
'user': dbconf.get('USER'),
'passwd': dbconf.get('PASSWORD'),
'port': dbconf.get('PORT'),
'charset': 'utf8mb4',
database=dbconf.get('NAME')
try:
conn=pymysql.connect(**config)
cur=conn.cursor()
if '-d' in sys.argv:
cur.execute('drop database '.format(database))
print('drop database '.format(database))
cur.execute('create database '.format(database))
print('success to create database '.format(database))
#conn.select_db(database)
conn.commit()
cur.close()
conn.close()
except Exception as e:
import traceback;traceback.print_exc() 参考技术A 在被import py文件的文件夹中建立一个空的__init__.py文件
python 软件目录结构规范--附如何通过环境变量导入其他目录模块
"项目目录结构"其实也是属于"可读性和可维护性"的范畴。
目录组织方式
关于如何组织一个较好的Python工程目录结构,已经有一些得到了共识的目录结构。在Stackoverflow的这个问题上,能看到大家对Python目录结构的讨论。
这里面说的已经很好了,我也不打算重新造轮子列举各种不同的方式,这里面我说一下我的理解和体会。
假设你的项目名为foo, 我比较建议的最方便快捷目录结构这样就足够了:
Foo/
|-- bin/
| |-- foo
|
|--conf/
| |--__init__.py
| |--settings.py
|
|-- foo/
| |-- tests/
| | |-- __init__.py
| | |-- test_main.py
| |
| |-- __init__.py
| |-- main.py
|
|-- docs/
| |-- conf.py
| |-- abc.rst
|
|-- setup.py
|-- requirements.txt
|-- README
简要解释一下:
bin/
: 存放项目的一些可执行文件,当然你可以起名script/
之类的也行。- conf/:存放项目配置文件
foo/
: 存放项目的所有源代码。(1) 源代码中的所有模块、包都应该放在此目录。不要置于顶层目录。(2) 其子目录tests/
存放单元测试代码; (3) 程序的入口最好命名为main.py
。docs/
: 存放一些文档。setup.py
: 安装、部署、打包的脚本。requirements.txt
: 存放软件依赖的外部Python包列表。README
: 项目说明文件。
除此之外,有一些方案给出了更加多的内容。比如LICENSE.txt
,ChangeLog.txt
文件等,我没有列在这里,因为这些东西主要是项目开源的时候需要用到。如果你想写一个开源软件,目录该如何组织,可以参考这篇文章。
如何使用不同目录下的文件
以上图目录结构为例,我们在main.py中,使用bin目录下文件,首先需要找到Foo/目录,然后才能导入Foo/下的子目录的模块,并且需要做到自动获取,不能写死,这时候就使用到os模块
import os
import sys
1、找到文件的绝对路径
os.path.abspath(__file__) #获取文件的绝对路径,包含文件名
2、获取文件的目录
os.path.dirname(os.path.abspath(__file__) ) # 例如main.py的目录是foo/
3、再次获取文件目录的父目录
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__) ))
4、添加到环境变量中
sys.path.append(BASE_DIR)
5、导入需要的目录
①. import bin
②. from bin import *
二种方式导入,各有优缺点,后续会详细讲解,至此,就可以使用其他目录的模块,欢迎各位看官留言指点
以上是关于python如何通过变量import其他文件夹的py文件的主要内容,如果未能解决你的问题,请参考以下文章
ES6中export和import详解(export定义了模块的对外接口后,其他JS文件就可以通过import来加载这个模块)