1. 输出CSV文件
用python输出csv文件不难,可是MS office excel和WPS 对输出的CSV文件打开规则不一样。
WPS可以支持CSV以' '为分隔符,打开文件直接写内容
MS office excel必须用','为分隔符,打开文件在写内容之前,要先写入文件头:u"ufeff",否则输出的中文会出现乱码。
import codecs csvstr = 'test' fh = codecs.open("myfile.csv","w","utf-8") fh.write(u"ufeff") fh.write(csvstr) fh.close()
2. 使用pyInstaller打包python程序
pyInstaller包目前可以直接使用pip install pyinstaller来安装,安装完成之后,在命令行输入pyinstaller命令,会出现参数提示信息。
D:SourcePython>pyinstaller usage: pyinstaller [-h] [-v] [-D] [-F] [--specpath DIR] [-n NAME] [--add-data <SRC;DEST or SRC:DEST>] [--add-binary <SRC;DEST or SRC:DEST>] [-p DIR] [--hidden-import MODULENAME] [--additional-hooks-dir HOOKSPATH] [--runtime-hook RUNTIME_HOOKS] [--exclude-module EXCLUDES] [--key KEY] [-d [{all,imports,bootloader,noarchive}]] [-s] [--noupx] [-c] [-w] [-i <FILE.ico or FILE.exe,ID or FILE.icns>] [--version-file FILE] [-m <FILE or XML>] [-r RESOURCE] [--uac-admin] [--uac-uiaccess] [--win-private-assemblies] [--win-no-prefer-redirects] [--osx-bundle-identifier BUNDLE_IDENTIFIER] [--runtime-tmpdir PATH] [--bootloader-ignore-signals] [--distpath DIR] [--workpath WORKPATH] [-y] [--upx-dir UPX_DIR] [-a] [--clean] [--log-level LEVEL] scriptname [scriptname ...] pyinstaller: error: the following arguments are required: scriptname
pyinstaller命令后scriptname参数是必须的,这是要生成exe的脚本文件,其都是可选参数,如果直接用pyinstaller scriptname来打包,会生成很多dll文件,如果想打包成一个可执行程序,要加参数-F,pyinstaller -F scriptname,其他参数下如图所示。
要打包的脚本文件要注意import的包,尽量只import需要的包和类,否则生成的文件可能会很大。
3. 获取当前文件路径,上级目录路径
import os,sys
使用sys.path[0]、sys.argv[0]、os.getcwd()、os.path.abspath(__file__)、os.path.realpath(__file__)
sys.path是Python会去寻找模块的搜索路径列表,sys.path[0]和sys.argv[0]是一回事因为Python会自动把sys.argv[0]加入sys.path。
如果你在C: est目录下执行python getpathgetpath.py,那么os.getcwd()会输出“C: est”,sys.path[0]会输出“C: estgetpath”。
获取当前的路径:
__file__是当前执行的文件
# 获取当前文件__file__的路径 print(os.path.realpath(__file__)) # 获取当前文件__file__的所在目录 print(os.path.dirname(os.path.realpath(__file__))) print(os.path.abspath(os.path.dirname(__file__))) print(os.path.split(os.path.realpath(__file__))[0]) # 获取上级目录 print(os.path.abspath(os.path.dirname(os.path.dirname(__file__)))) print(os.path.abspath(os.path.join(os.path.dirname('APPtest\RSA.py'),'...'))) # 获取上上级目录 print(os.path.abspath(os.path.join(os.path.dirname('APPtest\RSA.py'),'../..')))