python 怎么在已有一个表格的xls文件上增加另一个表格
利用84功能就能实现这个要求.
python怎么导入自己写的包
包(packages)其实也是模块,其类型Type也是module.通常引用自定义模块时有两种方法:
1)将两个文件放在同一目录下.
2)在sys.path下添加要引用的py文件的路径.然后import.
这样的做法,对于少数文件是可行的,但如果程序数目很多,层级很复杂时就比较麻烦了.此时用package就能将多个py文件组织起来,类似于第三方包一样的引用.要方便很多.
package的层次结构与程序所在目录的层次结构相同,且必须包含一个__init__.py的文件.__init__.py可以为空,只要它存在就表明此目录被作为一个package处理.
package1/
__init__.py
subPack1/
__init__.py
module_11.py
module_12.py
module_13.py
subPack2/
__init__.py
module_21.py
module_22.py
……
__init__.py可以为空,只要它存在,就表明此目录应被作为一个package处理.当然,__init__.py中也可以设置相应的内容.
好了,现在我们在module_11.py中定义一个函数:
def funA():
print "funcA in module_11"
return
一.引用模块
在顶层目录(也就是package1所在的目录,当然也参考上面的介绍,将package1放在解释器能够搜索到的地方)运行python:
>>>from package1.subPack1.module_11 import funcA
>>>funcA()
funcA in module_11
这样,我们就按照package的层次关系,正确调用了module_11中的函数.
二.使用通配符*,导入某个module中的所有元素
答案就在__init__.py中.我们在subPack1的__init__.py文件中写
__all__ = ['module_13', 'module_12']
然后进入python
>>>from package1.subPack1 import *
>>>module_11.funcA()
Traceback (most recent call last):
File "", line 1, in
ImportError: No module named module_11
也就是说,以*导入时,package内的module是受__init__.py限制的.
三.在package内部互相调用.
1.如果希望调用同一个package中的module,则直接import即可.也就是说,在module_12.py中,可以直接使用
import module_11
2.如果不在同一个package中,例如我们希望在module_21.py中调用module_11.py中的FuncA,则应该这样:
from module_11包名.module_11
import funcA
四.Python如何找到我们定义的module?
在标准包sys中path属性记录了Python的包路径.
import sys
print(sys.path)
通常我们可以将module的包路径放到环境变量PYTHONPATH中,该环境变量会自动添加到sys.path属性.
另一种方便的方法是编程中直接指定我们的module路径到sys.path 中.
常用的话也可以放在python27\lib\site-packages文件夹下.
怎么读取xls文件格式?
WIDOWS XP或2000
python怎么生成可执行文件
Python是一个脚本语言,被解释器解释执行.它的发布方式:
.py文件:对于开源项目或者源码没那么重要的,直接提供源码,需要使用者自行安装Python并且安装依赖的各种库.(Python官方的各种安装包就是这样做的)
.pyc文件:有些公司或个人因为机密或者各种原因,不愿意源码被运行者看到,可以使用pyc文件发布,pyc文件是Python解释器可以识别的二进制码,故发布后也是跨平台的,需要使用者安装相应版本的Python和依赖库.
可执行文件:对于非码农用户或者一些小白用户,你让他装个Python同时还要折腾一堆依赖库,那简直是个灾难.对于此类用户,最简单的方式就是提供一个可执行文件,只需要把用法告诉Ta即可.比较麻烦的是需要针对不同平台需要打包不同的可执行文件(Windows,Linux,Mac,...).
本文主要就是介绍最后一种方式,.py和.pyc都比较简单,Python本身就可以搞定.将Python脚本打包成可执行文件有多种方式,本文重点介绍PyInstaller,其它仅作比较和参考.
Freezing Your Code
各种打包工具的对比如下(来自文章Freezing Your Code):
Solution
Windows
Linux
OS X
Python 3
License
One-file mode
Zipfile import
Eggs
pkg_resources support
bbFreeze ? ?yes ? ?yes ? ?yes ? ?no ? ?MIT ? ?no ? ?yes ? ?yes ? ?yes ? ?
py2exe ? ?yes ? ?no ? ?no ? ?yes ? ?MIT ? ?yes ? ?yes ? ?no ? ?no ? ?
pyInstaller ? ?yes ? ?yes ? ?yes ? ?no ? ?GPL ? ?yes ? ?no ? ?yes ? ?no ? ?
cx_Freeze ? ?yes ? ?yes ? ?yes ? ?yes ? ?PSF ? ?no ? ?yes ? ?yes ? ?no ? ?
py2app ? ?no ? ?no ? ?yes ? ?yes ? ?MIT ? ?no ? ?yes ? ?yes ? ?yes ? ?
PS.其中pyInstaller和cx_Freeze都是不错的,stackoverflow上也有人建议用cx_Freeze,说是更便捷些.pkg_resources新版的pyInstaller貌似是支持的.
安装PyInstaller
对于那些网络比较稳定,能够流畅使用pip源地址的用户,直接下面的命令就可以搞定:
pip install pyinstaller
通常我们会下载源码包,然后进入包目录,执行下面的命令(需要安装setuptools):
python setup.py install
安装完后,检查安装成功与否:
pyinstaller --version
安装成功后,就可以使用下面的命令了:
pyinstaller?: 打包可执行文件的主要命令,详细用法下面会介绍.
pyi-archive_viewer?: 查看可执行包里面的文件列表.
pyi-bindepend?: 查看可执行文件依赖的动态库(.so或.dll文件)
pyi-...?: 等等.
使用PyInstaller
pyinstaller的语法:
pyinstaller [options] script [script ...] | specfile
最简单的用法,在和myscript.py同目录下执行命令:
pyinstaller mycript.py
然后会看到新增加了两个目录build和dist,dist下面的文件就是可以发布的可执行文件,对于上面的命令你会发现dist目录下面有一堆文件,各种都动态库文件和myscrip可执行文件.有时这样感觉比较麻烦,需要打包dist下面的所有东西才能发布,万一丢掉一个动态库就无法运行了,好在pyInstaller支持单文件模式,只需要执行:
pyinstaller -F mycript.py
你会发现dist下面只有一个可执行文件,这个单文件就可以发布了,可以运行在你正在使用的203作系统类似的系统的下面.
当然,pyinstaller还有各种选项,有通用选项,如-d选项用于debug,了解pyInstaller执行的过程;还有一些针对不同平台的选项,具体用法可以访问PyInstaller官方WIKI.
在执行pyInstaller命令的时候,会在和脚本相同目录下,生成一个.spec文件,该文件会告诉pyinstaller如何处理你的所有脚本,同时包含了命令选项.一般我们不用去理会这个文件,若需要打包数据文件,或者给打包的二进制增加一些Python的运行时选项时...一些高级打包选项时,需要手动编辑.spec文件.可以使用:
pyi-makespec options script [script ...]
创建一个.spec文件,对于手动编辑的.spec文件,我们可以使用下面任意一条命令:
pyinstaller specfile pyi-build specfile
PyInstaller的原理简介
PyInstaller其实就是把python解析器和你自己的脚本打包成一个可执行的文件,和编译成真正的机器码完全是两回事,所以千万不要指望成打包成一个可执行文件会提高运行效率,相反可能会降低运行效率,好处就是在运行者的机器上不用安装python和你的脚本依赖的库.在Linux203作系统下,它主要用的binutil工具包里面的ldd和objdump命令.
PyInstaller输入你指定的的脚本,首先分析脚本所依赖的其他脚本,然后去查找,复制,把所有相关的脚本收集起来,包括Python解析器,然后把这些文件放在一个目录下,或者打包进一个可执行文件里面.
可以直接发布输出的整个文件夹里面的文件,或者生成的可执行文件.你只需要告诉用户,你的应用App是自我包含的,不需要安装其他包,或某个版本的Python,就可以直接运行了.
需要注意的是,PyInstaller打包的执行文件,只能在和打包机器系统同样的环境下.也就是说,不具备可移植性,若需要在不同系统上运行,就必须针对该平台进行打包.
参考资料
菜鸟求助!! 用python怎样将一个文件的内容读取到另一个文件?最好给一个代码,跪谢!!!!
ifn = r"源文件路径"
ofn = r"目标文件路径"
#写入和写出带上"b"是为了防止读到二进制文件而无法读完的问题
infile = open(ifn, 'rb')
outfile = open(ofn, 'wb')
outfile.write(infile.read())
infile.close()
outfile.close()
如何用python生成和读取二进制文件
可以使用numpy.fromfile(),也可以使用open(filename, 'rb'),其中的'b'就是二进制的意思2113,然后使用文件类型的read方法5261,读取一些字节,再用struct.unpack()方法4102来解析二进制.
第一种方法是一次性读入文件(或文件的前多少个连续字节)到一个数组中,因此,灵活性差1653.
第二种方法灵活性很高,可以读取任意位置(使用文件的seek()方法跳跃位置)的二进制数据,再使用struct.unpack()方法来进行各种二进制解析.
提示:二进制文件是不保留存储方版式的数据格权式,因此,读二进制文件时应该知道二进制文件的存储格式.