别人家的Python代码——记录一些容易忘的姿势

开始前的例行叨叨:

长期记录一些别人脚本里看到的,提升效率的姿势,容易忘记的用法。

 

【字符类】

 

 

一、生成字符串

在需要爆破的时候,不需要手打字符集。

>>> import string
>>> string.letters
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
>>> string.digits
'0123456789'

 

 

二、!生成爆破字符

利用itertools库生成笛卡尔积,从此不用无尽for循环!!!

因为生成的 i 对象是元组('a', 'b')

所以用 ''.join(i) 把它拼成需要爆破的字符串

>>> import itertools
>>> for i in itertools.product('abcdefg', repeat = 2):
	print ''.join(i)
aa
ab
ac
ad
ae
af
ag
ba
bb

此外,还可以对两个数组、元组、字符串进行排列组合

>>> a = 'abcd'
>>> b = '123'
>>> for i in itertools.product(a,b):
	print ''.join(i)
a1
a2
a3
b1
b2
b3
c1
c2
c3
d1
d2
d3

 

 

三、检测字符

检测开头可以用

'abcde'.startswith('ab')

返回值是True或False

检测中间用 'abcde'.find('xxx') >= 0

-1是找不到

 

 

四、windows中文路径问题

若已定义编码:

# -*- coding: cp936 -*-

就用:

new_dir = new_dir + '中文.txt'.decode('cp936')

若从网络获取,先解码utf-8再尝试编码gb2312

 

五、路径操作

os.getcwd()

获取当前路径

 

allFileList = []
for root, dirs, files in os.walk(os.getcwd()):
    for i in files:
        if i.endswith('.html'):
            allFileList.append(root + "\\" + i)

可以获取路径下所有.html文件

注意,一次for i in files 这个files列表是第一层子目录下的所有文件

第一层的for xxx in os.walk每次返回逐渐加深的子目录层

root获取到的是本层的路径

dirs获取到的是本层目录内所有文件夹名

files获取到本层所有文件名列表

 

os.path.basename('C:\\aa\\bb\\cc.txt')

能获取到cc.txt 也就是纯文件名

 

os.path.splitext('abc.txt')

获得一个['abc', 'txt']

可以得到后缀,或不含后缀的文件名

 

 

六、字典排序输出

根据值排序,从大到小:

for key in sorted(pList, key = pList.__getitem__, reverse = True):
    print(key + ' : ' + str(pList[key]))

 

 

 

【其他类】

 

 

一、随机选择

从数组中随机选一项,不需要随机出一个序号,再从数组中取了。

也可以对string字符串random.choice

>>> import random
>>> sz = ['x1','x2','x3','x4']
>>> random.choice(sz)
'x2'

 

 

二、随机种子

设置随机种子后,连续的随机结果会一致。

>>> random.seed(1)
>>> random.randint(1,100)
14
>>> random.randint(1,100)
85
>>> random.seed(1)
>>> random.randint(1,100)
14
>>> random.randint(1,100)
85

 

 

三、序列xrange和range

range能返回一个List数组,可以

sz = range(1, 100)

会得到1,2,...99的序列

 

但xrange(1, 100)只能得到一个xrange对象

用法只能

for i in xrange(1, 100):

    print i 

 

 

 

四、用pyinstaller打包py为exe(推荐)

这种方法可以打包成1个exe,不需要整个文件夹里一大堆东西带着走。

而且在打包requests库进行https时不出证书报错。

(详情:https://blog.csdn.net/publicstr/article/details/80083494)

方法:

pip install pyinstaller

在python27/script/目录下会生成pyinstaller.exe

所需的环境变量目录和pip是同一个目录,只要能用pip就可以在cmd中用pyinstaller命令

pyinstaller -F xxx.py

其中-F参数表示打包成一个exe

exe生成的路径在输出中找

 

 

五、用py2exe打包py为exe

需要安装py2exe

但pip install py2exe会出错,提示为python3版本

2.7下载py2exe地址为:

https://sourceforge.net/projects/py2exe/files/py2exe/0.6.9/py2exe-0.6.9.win64-py2.7.amd64.exe/download

下载的exe直接安装

 

打包方法:

创建create.py

from distutils.core import setup
import py2exe

setup(console=["xxxx.py"])

把xxxx.py改为要打包的python文件名,放在同一目录下,CMD执行

python create.py py2exe

生成的dist目录整个带走即可。

 

 

六、BeautifulSoup解析html的常用姿势

先pip安装

pip install BeautifulSoup4

pip install html5lib

 

引入soup:

from bs4 import BeautifulSoup

 

把获取的html创建soup对象

soup = BeautifulSoup(html, 'html5lib')

 

可以print

soup.title.text

soup.title.name

soup.body.text

soup.get_text()

 

 

 

七、pip瞬间提速

pip install django -i https://pypi.tuna.tsinghua.edu.cn/simple

只需要在后面加-i参数 指定国内源即可

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值