为了便于复用有了模块。其实就是一个python文件
那么当项目大了,模块也就多了,为了方便管理,所以有了命名空间的概念,命名空间的参数形式就是包:
那么接下来就说一下包的一些事项:
└── FC
├── __init__.py
├── __init__.pyc
├── Libr
│ ├── __init__.py
│ ├── __init__.pyc
│ ├── one.py
│ ├── one.pyc
│ ├── two.py
│ └── two.pyc
└── Model
├── __init__.py
├── one.py
└── two.py
上面是我建立的包结构:
FC-->Libr->one.py
#!/usr/bin/env python
a = 'Libr.one.a'
b= ' Libr.one.b'
如果要利用到FC-->Libr->one-->中的a变量:
1.import FC.Libr.one
print FC.Libr.one.a
2.from FC.Libr import one
one.a
3. from FC.Libr.one import *
a
这种情况不推荐用,这样就把命名空间的好处给弄没了,如果一定要这么弄的话,那么就在one.py中加如 __all__=['a'] 来限制一下,即只引入a
4.
在 FC.Libr的__init__.py中添加 __all__=['one','two']
from FC.Libr import *
one.a
__init__.py中可以添加要进入的模块代码进行初始化!
使用sys.modules可查看当前加载的所有模块
sys.path 为包和模块的路径搜索:本地文件夹,系统默认的搜索路径 sys.path.append/remove() 可以进行动态删除
python subprocess来进行系统操作:
subprocess.Popen('ls -l',shell=True)
subprocess.call() subprocess.checkcall() 都是调用Popen来实现的,增加了wait() 等。。。。 产生一个进程进行处理fork