【原创】研究Tribler过程中遇到的Python相关问题总结
【打开文件的路径和导入模块的路径】
打开文件用的“路径”和导入模块的“路径”是不一样的。
打开文件的路径是你主程序文件(.py)启动时所在的路径,这个当前路径是一个确定的唯一的路径,例如,当使用PythonWin打开D:\p2pEnv\mainbranch\Tribler\Tools\createlivestream.py时:
import os print os.getcwd() D:\\p2pEnv\\mainbranch\\Tribler\\Tools
# 可以如下切换当前目录 os.chdir(rC:\Python27\Lib)
模块搜索的路径是通过sys.path指定的路径,该变量初始化时默认包含了
使用sys.path.append(modulepath)添加的路径只在运行时有效,下次运行编译器时就不存在了,这里modulepath可以是包含.py/pyc/pyo/pyw等文件的zip或egg。
import sys print sys.path [C:\\, C:\\WINDOWS\\system32\\python27.zip, C:\\Python27\\DLLs, C:\\Python27\\lib, C:\\Python27\\lib\\plat-win, C:\\Python27\\lib\\lib-tk, C:\\Python27\\Lib\\site-packages\\Pythonwin, C:\\Python27, C:\\Python27\\lib\\site-packages, C:\\Python27\\lib\\site-packages\\win32, C:\\Python27\\lib\\site-packages\\win32\\lib, C:\\Python27\\lib\\site-packages\\wx-2.8-msw-unicode]
【__init__.py文件】
__init__.py文件:导入包之前都会调用该文件
只要第一次导入包中的任何部分,就会执行文件__init__.py中的代码。这个文件可以为空,但也可以包含可执行特定于该包的初始化工作的代码。在import语句执行期间,遇到的所有__init__.py文件都会执行。因此,语句import Graphics.Primitive.fill将会首先执行Graphics目录中的__init__.py文件,然后执行Primitive目录中的__init__.py文件。
在使用包时,处理下面这条语句时需要小心:
使用该语句的程序员通常希望将与某个包相关联的所有子模块导入到当前命名空间中。但是,由于各个子系统之间的文件名约定不同(特别是在区分大小写上),Python无法准确地确定各个模块的具体内容。结果,该语句只会导入在Primitive目录的__init__.py文件中定义的所有名称。这个列表应该在包的__init__.py文件中定义,例如:
因此,可以在__init__.py文件中定义__all__,通过该定义,模块(或包)可以精确控制导入的名称集合,比如module.py中
但由于import somepkg会执行somepkg目录下的__init__.py文件,所有如果__init__.py中有from . import somemodule之类的语句,则somepkg.somemodule(xx) 就可以正确执行了。
【文件格式】
python并非完全是解释性语言,它是有编译的。python程序执行时通常是先把源码.py文件编译成.pyc或者.pyo,然后由python的虚拟机执行。相对于.py文件,编译得到的.pyc和.pyo从本质上讲和.py没有太大区别,只是会提高当前模块的加载速度,但并没有提高代码的执行速度。通常情况下不用主动去编译.py文件,文档上说只要调用了import model那么model.py就会自动被先编译成model.pyc然后再加载。
.pyc:预编译过的.py文件
.pyo:优化的预编译过的.py文件
.pyw:
Windows下.py文件用 python.exe 运行,.pyw文件用 pythonw.exe 运行
跟 python.exe 比较起来,pythonw.exe 有以下的不同:
Python中的时间序列数据操作总结 在本文中,我们介绍时间序列数据的索引和切片、重新采样和滚动窗口计算以及其他有用的常见操作,这些都是使用Pandas操作时间序列数据的关键技术。
相关文章
- pycharm版本区别_怎么看pycharm的python版本
- python skitlearn_Python sklearn
- pycharm打包python项目_Python怎么打包
- python上传文件方法总结
- Python Flask,Json,返回Json数据,jsonify
- python大数据分析实例-用Python整合的大数据分析实例
- python–threading多线程总结[通俗易懂]
- python encode和decode函数说明[通俗易懂]
- Python&R语言-python和r相遇
- python socket recvfrom_Python:socket.recvfrom()不返回任何地址
- python hexdump_笨办法学 Python · 续 练习 26:`hexdump`
- Python 生成随机数_python 随机字符串
- python unicode编码转换utf-8编码_不成问题的问题人物解析
- 论文拾萃 | PISTS算法求解obnoxious p-median problem (附Python代码)
- 隐藏源码细节:Python脚本编译pyc文件
- Python中的魔法方法
- colab上更换python版本或者换成tensorflow1.x版本
- Python 进阶指南(编程轻松进阶):四、起个好名字
- Python基础语法-函数-函数装饰器-带参数的类装饰器
- python-Django-基础概念(二)
- python对json的操作总结(一)详解编程语言
- Python写计算器详解编程语言
- 小白的Python之路 day5 python模块详解及import本质编程语言
- python_day25_序列化模块详解编程语言
- Linux系统下安装Python模块指南(linux安装python模块)
- Linux下运行Python脚本的步骤简介(linux如何运行python脚本)
- python每次处理固定个数的字符的方法总结
- Python使用RethinkDB总结
- 零基础写python爬虫之使用urllib2组件抓取网页内容
- 使用python编写脚本获取手机当前应用apk的信息