Skip to content

有关python的笔记、脚本搜集

Notifications You must be signed in to change notification settings

lon91ong/python

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Python相关的脚本联系

gather

抓取教务网站的学生名单,updata成绩录入数据库,hvzs汇总数据库记录

ssLink

sslink64

精简Python环境

whl下载: simple

用humpty转换成egg格式, 参考

python -m humpty -d . idna-2.10-py2.py3-none-any.whl
%批量处理
for /F "delims=" %i in ('dir /B *.whl') do python -m humpty -d . %i

MaoTV

IPTV BiuBiu

muster.py

也是抓名单的脚本...

netTime.py

同步本地时间和某个特定网站的时间

Python折腾Excel

中文参考 , 英文参考

Excel2003以前的格式(*.xls),简单的读用 xlrd 简单的写用 xlwt ,功能需求更多用 xlwings

Excel2010以后的格式(*.xlsx), 用 openpyxl

压制(suppress)关闭Excel时的保存提示

参考微软官方给的几个方法

单一的方法都试过了,不起作用,最后实践证明下面的方法有效。在每一次变化后都要设置属性`Saved = True`,这样就可以干掉烦人的提示了!

Import Json to excel and export excel to Json

需要分析数据或数据量大可以用 pandas

Tips

实用的消息框函数

def Mbox(title, text, style = ''):
   import win32con
   from win32api import MessageBox
   if style == 'error':  # 错误
       MessageBox(0, text, title, win32con.MB_ICONERROR)
   elif style == 'info': # 信息
       MessageBox(0, text, title, win32con.MB_ICONASTERISK)
   elif style == 'warn': # 警告
       MessageBox(0, text, title, win32con.MB_ICONWARNING)
   else:
       MessageBox(0, text, title, win32con.MB_OK)

Win32风格文件保存/打开对话框

函数定义 , 代码示例

精简版Anaconda--Miniconda使用笔记

Anaconda集成了太多的东西,功能强大,唯一不爽的就是太过臃肿,每次重装系统之后都要删除重装,一堆麻烦!所以改用精简版的 Miniconda ,仅包含了python环境和conda管理器prompt。

安装完后,补充一些自用的包:

pip install spyder !不需要先折腾PyQt

pip install --ignore-installed jupyter !强制覆盖安装

pip install spyder-notebook !集成jupyter到spyder环境

pip install xlwings !支持Excel和WPS专业版(个人版WPS不支持API)

pip install python-docx !仅支持2010(*.docx)格式

清华Anaconda镜像 网址

遇到了一个sqlite3动态链接库无法加载的错误,参考 StackOverflow 的方法,无需下载,在Anaconda安装路径中搜索一个sqlite3.dll文件,复制到Anaconda安装目录下的DLLs目录中,问题解决。

Anaconda下多Python版本的玩法

使用以下命令创建新环境: conda create -n env_name [list of packages]

其中 -n 代表 name,env_name 环境名称,[list of packages] 可选参数,在新环境中需要安装的工具包。

例如:安装一个名为xpy3的3.4.4版32位python环境: 参考

set CONDA_FORCE_32BIT=1

conda create -n xpy3 python=3.4.4

3.4.4是支持win xp系统的最后一个Python3版本,安装对应的 pywin32 时,pip返回找不到对应的包的错误, 手动下载对应的安装包 pywin32-221.win32-py3.4.exe ,运行时遇到找不到对应的python环境的错误,此时需要手动修改系统注册表:`HKEY_CURRENT_USER\SOFTWARE\Python\PythonCore`项下添加*项3.4-InstallPath*, 参数变量设置为环境安装路径即可,如下图所示。

./imgs/python_env.png

scipy和numpy也有类似的问题,xpy344_x86安装包地址: scipy-1.2.2-cp34-cp34m-win32.whl , numpy-1.15.4-cp34-none-win32.whl pywin32 可以用pypiwin32==219替代,参考

其它版本

其它相关命令(参考1参考2 ):

安装环境遇到PackagesNotFoundError错误:

conda config --show-sources //查看源

conda config --set restore_free_channel true //重置免费源

装完之后进入环境:conda activate xpy3

退出:conda deactivate

删除不需要的环境:conda env remove -n env_name

显示所有环境:conda env list

回溯版本:conda list --revisions

conda install --rev revnum

使用pyinstaller打包程序注意事项

Pyinstaller 打包发布经验总结 , 参考1 , 参考2

Pyinstaller打包导致的路径错误, os.path.dirname(os.path.realpath(sys.executable)) 参考

python 版的守护进程和Windows服务

Pyinstaller打包用spec添加资源文件

Nuitka打包参考 相较于Pyinstaller侧重打包功能, Nuitka更侧重与加速功能

实用参数: nuitka --mingw64 --onefile --follow-imports --full-compat --file-reference-choice=runtime --output-dir=out --windows-icon-from-ico=some.ico some.py

用例: pyinstaller --onefile --clean -i Artua.ico pySvr.py

nuitka --mingw64 --onefile --plugin-enable=upx --windows-onefile-tempdir-spec=%TEMP%\labOffline --windows-icon-from-ico=Artua.ico --output-dir=out pySvr.py

编译pyd模块:nuitka --mingw64 --module --show-progress --full-compat --plugin-enable=upx --output-dir=o falRes.py

nuitka --mingw64 --follow-imports --full-compat --include-package=requests --plugin-enable=upx --windows-icon-from-ico=Artua.ico --output-dir=out pySvr.py

Nuitka参数说明 --plugin-enable=upx 启用upx压缩; --windows-onefile-tempdir-spec=%TEMP%\someDir 配合--onefile的单一文件模式使用,指定零时解压路径 --full-compat 适配嵌入式的python包 --file-reference-choice=runtime 需要读取程序运行路径下的文件时适用 --include-package=requests 解决报错 requests - urllib3 - six - No module named http.client

SQLite3查询结果返回字典格式 参考 参考 , 参考

Falcon 参考

前缀序列

# 最简单
sum(['a{0},b{0}'.format(i).split(',') for i in range(1, 20)],[])
# or
from itertools import chain
list(chain(*['a{0},b{0}'.format(i).split(',') for i in range(1, 20)]))
list(chain.from_iterable(['a{0},b{0}'.format(i).split(',') for i in range(1, 20)]))
# or
import numpy as np
np.ravel(['a{0},b{0}'.format(i).split(',') for i in range(1, 20)]).tolist()

# 自定义函数
def flaten(nested_list):
   for item in nested_list:
       if isinstance(item, (list, tuple)):
           for sub_item in flaten(item):
               yield sub_item
       else:
           yield item

list(flaten([[1,2,3], [5, 2, 8], [7,8,9]]))

中文正则表达是匹配

很多很多的答案是 [\u4e00-\u9fa5] ,但是在Emeditor里这个不好使,它不仅仅匹配中文。

找了一个仅仅匹配中文的正则式子 [一-龥] 好用!!!

错误追踪

输出sys.exc_info()列表, [错误类型,错误值,traceback对象] traceback对象可以用traceback.print_tb()输出查看

from traceback import print_tb
try:
  ...
except:
  print("Unexpected error:", sys.exc_info()[0:2])
  print_tb(sys.exc_info()[-1])

Requests

中文乱码

r = requests.get(“http://www.baidu.com“)

r.text返回的是**Unicode**型的数据。

r.content返回的是**bytes**型的数据。

修改r.text的编码:

url = 'http://music.163.com'
r = requests.get(url)
html = r.content
html_doc=str(html,'utf-8') # html_doc=html.decode('utf-8','ignore')
print(html_doc)

r.encoding='utf-8'
print(r.text)

Selenium

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()
options.binary_location = "D:\\MyChrome\\Chrome\\chrome.exe"
driver = webdriver.Chrome(options = options, executable_path="D:\\Python\\Scripts\\chromedriver_105.0.5195.52.exe")
driver.get('http://data.eastmoney.com/bbsj/202206/lrb.html')
print("Chrome Browser Invoked")

精简Python环境 简书

参考 , 嵌入环境补充pip