python memo

jupyter note book

 

自动提示

 1 #安装
 2 打开Anaconda Prompt窗口,执行第一个命令,用于安装nbextensions:
 3 pip install jupyter_contrib_nbextensions
 4 再执行第二个命令,用于安装 javascript and css files
 5 jupyter contrib nbextension install --user
 6 最后执行,用于安装configurator
 7 pip install jupyter_nbextensions_configurator
 8 
 9 #卸载
10 pip uninstall jupyter_contrib_nbextensions
11 pip uninstall jupyter_nbextensions_configurator

 

安装opencv

pip install opencv-python

 

pyqt

pip install PyQt5
pip install pyqt5-tools
C:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\envs\machine\Lib\site-packages\pyqt5_tools

 

 

open ai gym 安装

1 $  pip install gym #最小化安装
2 or
3 $  pip install gym[all] #全部安装 但是安装有问题

 https://keras-gym.readthedocs.io

https://github.com/KristianHolsheimer/keras-gym

 

keras强化学习库

https://github.com/keras-rl/keras-rl/

 

https://github.com/quantylab/rltrader
https://pypi.org/project/fix-yahoo-finance/

linux:pip install ta-lib 
https://www.lfd.uci.edu/~gohlke/pythonlibs/#ta-lib 下载相应版本的 ta-lib windows 64bit: pip install TA_Lib
-0.4.10-cp36-cp36m-win_amd64.whl conda install pandas-datareader pip install fix_yahoo_finance 画图 pip install https://github.com/matplotlib/mpl_finance/archive/master.zip conda install bokeh
pip install jupyterlab
需要安装node.js 以后 重新打开 anaconda prompt jupyter labextension install jupyterlab_bokeh conda install BeautifulSoup4

https://pyecharts.org/#/zh-cn/rectangular_charts

 

jupyter notebook 发表在blog 

转HTML 

ipython nbconvert --to html --template basic filename.ipynb 

需要头部添加CSS

 1 <style type="text/css">  
 2 .highlight{background: #f8f8f8; overflow:auto;width:auto;border:solid gray;border-width:.1em .1em .1em .1em;padding:0em .5em;border-radius: 4px;}  
 3 .k{color: #338822; font-weight: bold;}  
 4 .kn{color: #338822; font-weight: bold;}  
 5 .mi{color: #000000;}  
 6 .o{color: #000000;}  
 7 .ow{color: #BA22FF;  font-weight: bold;}  
 8 .nb{color: #338822;}  
 9 .n{color: #000000;}  
10 .s{color: #cc2222;}  
11 .se{color: #cc2222; font-weight: bold;}  
12 .si{color: #C06688; font-weight: bold;}  
13 .nn{color: #4D00FF; font-weight: bold;}  
14 </style> 

或者转成MarkDown 放在Github

ipython nbconvert --to markdown  filename.ipynb 

 

量化书籍

https://wizardforcel.gitbooks.io/python-quant-uqer/19.html

http://baostock.com/baostock/index.php/%E9%A6%96%E9%A1%B5

 

移动窗口

1 import numpy as np
2 arr=np.arange(0,5)
3 print("arr=",arr)#arr= [0 1 2 3 4]
4 arr1=np.roll(arr,2)#移动窗口
5 print("arr1=",arr1)#arr1= [3 4 0 1 2]

 

error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools

解决:

https://visualstudio.microsoft.com/zh-hans/vs/older-downloads/?rr=https%3A%2F%2Fdololak.tistory.com%2F520

下载安装:Microsoft 生成工具 2015 更新 3

zipline 创建python3.5 环境 不能使用3.6 按下面顺序安装

1.安装上面的 “Microsoft 生成工具 2015 更新 3”

2.pip install zipline

3.pip install quandl

quandl API key:s3aGDwjM8DCn6LQFSeCW

 

安装sqlite3

conda install -c anaconda sqlite 

1.创建/打开数据库

 1 import sqlite3 2 conn = sqlite3.connect('my_sql3.db') 

2.创建表

 1 import sqlite3
 2 conn = sqlite3.connect('my_sql3.db')
 3 c = conn.cursor()
 4 c.execute('''CREATE TABLE COMPANY
 5        (ID            INT PRIMARY KEY     NOT NULL,
 6        NAME           TEXT    NOT NULL,
 7        AGE            INT     NOT NULL,
 8        ADDRESS        CHAR(50),
 9        SALARY         REAL);''')
10 print("创建成功")
11 conn.commit()
12 conn.close()
13 #创建成功

 

3.添加 INSERT

 1 import sqlite3
 2 conn = sqlite3.connect('my_sql3.db')
 3 c = conn.cursor()
 4 c.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
 5       VALUES (1, 'Paul', 32, 'California', 20000.00 )");
 6 
 7 c.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
 8       VALUES (2, 'Allen', 25, 'Texas', 15000.00 )");
 9 
10 c.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
11       VALUES (3, 'Teddy', 23, 'Norway', 20000.00 )");
12 
13 c.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
14       VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 )");
15 conn.commit()
16 print("添加成功")
17 conn.close()
18 #添加成功

 

4.查询SELECT

 1 import sqlite3
 2 
 3 conn = sqlite3.connect('my_sql3.db')
 4 c = conn.cursor()
 5 cursor = c.execute("SELECT id, name, address, salary  from COMPANY")
 6 for row in cursor:
 7     print('ID =%d NAME=%s ADDRESS=%s SALARY=%d '%(row[0],row[1],row[2],row[3]))
 8 conn.close()
 9 
10 """
11 ID =1 NAME=Paul ADDRESS=California SALARY=20000 
12 ID =2 NAME=Allen ADDRESS=Texas SALARY=15000 
13 ID =3 NAME=Teddy ADDRESS=Norway SALARY=20000 
14 ID =4 NAME=Mark ADDRESS=Rich-Mond  SALARY=65000 
15 """

 

5.修改 UPDATE

 1 import sqlite3
 2 
 3 conn = sqlite3.connect('my_sql3.db')
 4 c = conn.cursor()
 5 c.execute("UPDATE COMPANY set SALARY = 25000.00 where ID=1")
 6 conn.commit()
 7 print("更改数:",conn.total_changes) 
 8 
 9 #查询显示
10 cursor = conn.execute("SELECT id, name, address, salary  from COMPANY")
11 for row in cursor:
12     print('ID =%d NAME=%s ADDRESS=%s SALARY=%d '%(row[0],row[1],row[2],row[3]))
13 conn.close()
14 """
15 更改数: 1
16 ID =1 NAME=Paul ADDRESS=California SALARY=25000 
17 ID =2 NAME=Allen ADDRESS=Texas SALARY=15000 
18 ID =3 NAME=Teddy ADDRESS=Norway SALARY=20000 
19 ID =4 NAME=Mark ADDRESS=Rich-Mond  SALARY=65000 
20 """

 

6.删除

 1 import sqlite3
 2 
 3 conn = sqlite3.connect('my_sql3.db')
 4 c = conn.cursor()
 5 c.execute("DELETE from COMPANY where ID=2;")
 6 conn.commit()
 7 print("总共删除行:",conn.total_changes) 
 8 
 9 #查询显示
10 cursor = conn.execute("SELECT id, name, address, salary  from COMPANY")
11 for row in cursor:
12     print('ID =%d NAME=%s ADDRESS=%s SALARY=%d '%(row[0],row[1],row[2],row[3]))
13 conn.close()
14 """
15 总共删除行: 1
16 ID =1 NAME=Paul ADDRESS=California SALARY=25000 
17 ID =3 NAME=Teddy ADDRESS=Norway SALARY=20000 
18 ID =4 NAME=Mark ADDRESS=Rich-Mond  SALARY=65000 
19 """

 

 1 #pip install sqlalchemy
 2 from sqlalchemy import create_engine
 3 engine = create_engine(r'sqlite:///G:\python\Prj\04.Proj\KRX_Date\foo.db')#这样也行
 4 engine = create_engine('sqlite:///G:\\python\\Prj\\04.Proj\\KRX_Date\\foo1.db')#这样也行
 5 
 6 
 7 #添加数据    
 8 df1 = pd.DataFrame({'name' : ['User 4', 'User 5']})
 9 df1.to_sql('users', con=engine, if_exists='append') #if_exists='append'追加 replace:替换
10 engine.execute("SELECT * FROM users").fetchall()
11 
12 #代替数据
13 df1.to_sql('users', con=engine, if_exists='replace',index_label='id')
14 engine.execute("SELECT * FROM users").fetchall()
15 
16 #读取数据
17 df = pd.read_sql_query("select * from users where id < 10", engine)
18 print(df)

 

 

python 模拟鼠标 键盘

pip install pywinauto

 1 process:进程id
 2 app = Application().connect(process=2341)
 3 handle:应用程序的窗口句柄
 4 app = Application().connect(handle=0x010f0c)
 5 path:进程的执行路径(GetModuleFileNameEx 模块会查找进程的每一个路径并与我们传入的路径去做比较)
 6 app = Application().connect(path='C:\\Windows\\System32\\notepad.exe')# 可能权限问题
 7 参数组合(传递给pywinauto.findwindows.find_elements()这个函数)
 8 app = Application().connect(title_re=".*Notepad", class_name=“Notepad”)
 9 
10 2. 隐式等待
11 a) wait(wait_for, timeout = None, retry_interval = None)
12 wait_for可传入五种参数, 可以组合传参,但要以空格隔开:
13 exists: 窗口变成有效的句柄
14 visible: 窗口可见,没有隐藏
15 enabled: 窗口没有disable
16 ready: visible + enable
17 active: active
18 timeout:设置超时时间,若在n秒内没有等到窗口在wait_for中传入的几种状态,则会抛出TimeoutError。
19 retry_interval:超时后,间隔n秒再次重试。
20 Dlg.wait(“exists ready”, timeout = 5, retry_interval = 3)
21 
22 b) wait_not(wait_for_not,timeout = None,retry_interval = None)
23 等待窗口不处于某种状态时。参数与wait传参一致。
24 
25 
26 层级定位
27 app.window(class_name = ’Notepad’).window(class_name = ‘#32770’)
28 app.window(class_name = ‘Notepad’).child_window(class_name = ‘#32770’)
29 
30 wpath定位
31 若元素值为空,或不是唯一的情况下,可使用类似selenium中xpath的定位方式,根据查子元素的序号去定位元素。
32 app_window = app.window(class_name=‘Qt5QWindowIcon’) #定位登录窗口
33 app_window.children()[1].children()[0].children()[0] .children()[2] #定位用户名输入框控件(序号从0开始查)
34                                                 
35 3. 输入框输入
36 Dlg.control.type_keys(“xxxxx”)
37                                                 
38 4. 菜单栏
39 app.window.menu_select(Edit -> Replace)
40                                           
41 5. 鼠标点击                      
42 a)click() 点击Button控件
43 b)check_by_click() 通过click()方法勾选checkbox
44 c)uncheck_by_click() 通过click()方法取消勾选checkbox
45 d)get_check_state() 返回checkbox的勾选状态(0没勾选,1勾选,2不定)
46 e)is_checked(勾选返回true,为勾选返回false,不定返回None)
47 f)check() 勾选checkbox
48 g)uncheck() 不勾选checkbox
49 h)invoke() 点击(uia mode)
50 i)toggle () 勾选checkbox(uia mode)
51 
52 6. 键盘操作
53 “+”:Shift
54 “^”:Control
55 “%”:Alt

 

 1 from pywinauto.application import Application
 2 
 3 # 打开一个记事本(如果已经打开,可以忽略)
 4 app = Application().start("notepad.exe")
 5 
 6 # 绑定进程,class_name和title是可选的,可以灵活使用,如果找到多个货没有找到该程序,程序会报错
 7 app = Application().connect(class_name="Notepad",title="无标题 - 记事本")                        
 8 
 9 # 得到可操作的窗口,可以传入标题,类名,或者将标题传入键值
10 win = app.window(title="无标题 - 记事本")
11 # 或者(通常使用此方法)
12 win = app["无标题 - 记事本"]
13 
14 # 可以使用Edit对可编辑区进行编辑
15 win.Edit.type_keys('test.txt')
16 win.menu_select("文件->保存")
17 # 当弹出新的窗口时,窗口标题变化,因此需要重新确定可操作窗口
18 win = app['另存为']
19 win.Edit.type_keys('test.txt')
20 # 窗口内含有的按钮等名称,同样可以作为键值传入,从而得到控件
21 win['保存'].click()

 

posted @ 2019-06-07 17:33  kingboy100  阅读(534)  评论(0编辑  收藏  举报