抓取教务网站的学生名单,updata成绩录入数据库,hvzs汇总数据库记录
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
也是抓名单的脚本...
同步本地时间和某个特定网站的时间
Excel2003以前的格式(*.xls),简单的读用 xlrd 简单的写用 xlwt ,功能需求更多用 xlwings
Excel2010以后的格式(*.xlsx), 用 openpyxl
压制(suppress)关闭Excel时的保存提示
单一的方法都试过了,不起作用,最后实践证明下面的方法有效。在每一次变化后都要设置属性`Saved = True`,这样就可以干掉烦人的提示了!
Import Json to excel and export excel to Json
需要分析数据或数据量大可以用 pandas
实用的消息框函数
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*, 参数变量设置为环境安装路径即可,如下图所示。
scipy和numpy也有类似的问题,xpy344_x86安装包地址: scipy-1.2.2-cp34-cp34m-win32.whl , numpy-1.15.4-cp34-none-win32.whl pywin32 可以用pypiwin32==219替代,参考
安装环境遇到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)) 参考
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
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])
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)
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")