python问题记录

1、Linux环境下高亮打印:print "\033[93mWARNING:\033"
2、断点:
import pdb
pdb.set-trace()
3、self.assertEqual(a,b,msg=msg) #判断a与1.b是否一致,msg类似备注,可以为空
4、lstrip([chars]) chars --指定截取的字符
返回截掉字符串左边的空格或指定字符后生成的新字符串。
str = " this is string example....wow!!!"
print(str.lstrip()) #this is string example....wow!!!
str = "88888this is string example....wow!!!"
print(str.lstrip(‘8‘)) #this is string example....wow!!!
str = "8885488this is string example....wow!!!"
print(str.lstrip(‘8‘)) #5488this is string example....wow!!!
5、str.lower(): 转换字符串中所有大写字符为小写

6、json.dumps()函数是将一个Python数据类型列表进行json格式的编码
json.loads()函数是将将已编码的 JSON 字符串解码为 Python 对象

7、Python内置函数——__import__():
函数功能用于动态的导入模块,主要用于反射或者延迟加载模块。
__import__(module)相当于import module
8、Python内置函数(25)——getattr():
getattr(object, name[, default])
函数功能是从对象object中获取名称为name的属性,等效与调用object.name。
函数第三个参数default为可选参数,如果object中含义name属性,则返回name属性的值,如果没 有name属性,则返回default值,如果default未传入值,则报错
9、setattr(object, name, values):给对象的属性赋值,若属性不存在,先创建再赋值
hasattr(object, name):判断对象中是否有name的属性或方法,有返回True,没有返回false
getattr(object, name[,default]):获取对象 object 的属性或者方法,若存在则打印出来;若不存在,则打印默认值,默认值可选。

10、subprocess模块
允许生成新的进程,连接到它们的 input/output/error 管道,并获取子进程的返回(状态)码
subprocess.call() 执行指定的命令,返回命令执行状态,其功能类似于os.system(cmd)
subprocess.Popen(args,)用来创建新的进程
args参数:args参数。可以是一个字符串,可以是一个包含程序参数的列表。要执行的程序一般就 是这个列表的第一项,或者是字符串本身。
communicate() #返回标准输出和标准出错 元组:(stdoutdata, stderrdata)

11、str.splitlines([keepends])
Python splitlines() 按照行(‘\r‘, ‘\r\n‘, \n‘)分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。

12、os.path.exists(path) 如果path存在,返回True;如果path不存在,返回False。
13、 import site
site.addsitedir()
将目录添加到sys.path并处理其.pth文件

14、abspath = os.path.dirname(__file__) 得到当前文件的绝对路径__file__表示了当前文件的path

15、os.chdir(path) 改变当前工作目录到指定的路径。

16、python replace()方法:
str.replace(old, new[, max]):把字符串中的旧字符串替换成新字符串,参数max表示替换不超过 max 次。

17、split():通过指定分隔符对字符串进行切片,返回分割后的字符串列表

18、python pandas模块

19、urllib 模块:提供了一个从指定URL地址获取网页数据,然后对其进行分析处理,获取想要的数据

20、str.join(sequence)
python join()方法用于将序列中的元素以指定的字符连接生成一个新的字符串

21、dict.setdefault(key, default=None)
返回指定键的值 如果键不在字典中则添加键并将值设为默认值

22、bool() 函数用于将给定参数转换为布尔类型,如果没有参数,返回 False

23、re.sub()
对于输入的一个字符串,利用正则表达式(的强大的字符串处理功能),去实现(相对复杂的)字符串替换处理,然后 返回被替换后的字符串

24、pip卸载包:pip uninstall XXX

25、sorted()对所有可迭代对象进行排序操作

26、python -c command 指定要执行的命令
python -c "import sys; print(sys.executable)" #/usr/bin/python 查看python的安装路径

27、python 单元测试框架 ————unittest

28、os.getpid() 获取进程id
pid:操作系统中进程识别号

29、import datetime
datetime.datetime.now() 获取当前日期

30、python web.py框架
web.input() 获取url或是headler的参数 可以用于GET和POST请求包
web.data() 获取实体正文,只能用于POST请求包
两种方法返回值都是str类型

31、python sys.argv[]用法
sys.argv[]是一个从程序外部获取参数的桥梁,第一个元素[0]是程序本身,随后依次是外部给予的参数

32、安装报错x86_64-linux-gnu-gcc
解决办法:sudo apt-get install build-essential python-dev libssl-dev libffi-dev libxml2 libxml2-dev libxslt1-dev zlib1g-dev libkrb5-dev libmysqlclient-dev libpq-dev
sudo apt-get upgrade
安装python-ldap:apt-get install libsasl2-dev;pip3 install sasl;

33、创建python虚拟环境:apt-get install python-virtualenv
virtualenv venv 创建
source venv/bin/activate or . venv/bin/activate 打开
deactivate 关闭
指定解释器创建虚拟环境virtualenv -p /usr/bin/python3.5 名称

******
******


34、sys.path.append()和sys.path.insert() 加入临时搜索路径(import)
sys.path.insert(0,‘/path’),添加的目录会优先于其他目录被import检查

sys.path.append(‘..‘) 表示导入当前文件的上层目录到搜索路径中

35、os.getcwd()用于获取当前工作目录

36、os.path.join() 用于文件路径拼接 :
1、从右边开始数,遇到第一个以”/”开头的参数,开始拼接,这个参数左边的全部丢弃;
2、以上一种情况为先。在上一种情况确保情况下,若出现”./”开头的参数,会从”./”开头的参数左边相邻的一个参数开始拼接。

37、super() 函数是用于调用父类(超类)的一个方法。

38、如果你使用了非 ASCII 字符而且碰到了编码错误,记得在最顶端加一行 # -- coding: utf-8 --

39、open()与with open() as的区别:用with语句,到达语句末尾时,会自动关闭文件,即使出现异常
file = open("test.txt","r") with open("test.txt", "r") as file:
for line in file.readlines(): for line in file.readlines():
print line print line
file.close()
相当于:file = open("test.txt","r")
try:
for line in file.readlines():
print line
except:
print "error"
finally:
file.close()

40、product(list1,list2)依次取出list1中每1个元素,与list2中的每1个元素,组成元组(笛卡儿积),将所有元组组合成一个列表返回

41、python cgitb模块 提供了一个特殊的异常管理器该模块激活后,如果发生了未捕获的异常,将会展示格式化的输出报告。该报告包括源代码每一层的回溯,以及当前执行程序的参数和局部变量 可以选择将这些信息存到一个文件里

42、Terminal 打印有颜色的字体 magenta品红
from blessings import Terminal
term = Terminal()
name = "lhs"
print """==================================
Running health check on: %s ...
==================================""" % (term.magenta(name))

43、os.environ[‘USER‘]:当前使用用户
os.environ.keys() 字段列表

44、round() 方法返回浮点数x的四舍五入值。

45、reverse() 函数用于反向列表中元素 remove()函数用于删除列表元素 list.insert(index, obj)将指定对象插入到列表的指定位置

46、
from datetime import date, datetime
date.today() #2019-03-22
datetime.today() #2019-03-22 10:28:17.673110

47、filter(function, iterable)过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表(python3是迭代器对象)

48、python setup.py 方式安装
python setup.py build
python setup.py install

49、Linux python环境配置

安装pip: sudo apt-get install python-pip
安装环境依赖:sudo apt-get install build-essential python3-dev libssl-dev libffi-dev libxml2 libxml2-dev libxslt1-dev zlib1g-dev libkrb5-dev
sudo apt-get upgrade

升级setuptools:pip install --upgrade setuptools
升级pip: python -m pip install --upgrade pip

50、需求文件requirements.txt的创建及使用
生成: pip freeze >requirements.txt
使用:pip install -r requirements.txt

51、查看python的默认编码:
import sys
reload(sys)
print sys.getdefaultencoding()

52、os.listdir():返回一个列表,其中包含有指定路径下的目录和文件的名称
os.path.isdir()用于判断某一对象(需提供绝对路径)是否为目录
os.path.isfile()用于判断某一对象(需提供绝对路径)是否为文件


53、re 正则表达式
re.match方法用于尝试从字符串的起始位置匹配一个正则表达式

54、Ubuntu14.4安装python3.5
sudo add-apt-repository ppa:fkrull/deadsnakes
sudo apt-get update
sudo apt-get install python3.5
sudo apt-get install python3-pip
sudo cp /usr/bin/python3 /usr/bin/python3_bak,先备份
sudo rm /usr/bin/python3,删除
sudo ln -s /usr/bin/python3.5 /usr/bin/python3,默认设置成python3.5

55、忽略安装pip包:pip3 install docker-compose==1.10.0 --ignore-installed requests

56、直接用unzip命令解压.egg python安装包文件

57、访问 .py文件的网页的时候会出现 Exec format error的问题
一般情况下是由于基于Unix(Linux,Mac OS)系统下的问题,办法如下
1 .chmod +x filename  filename是要访问的文件名称,设置了以后文件具有可执行权限才能被web服务器访问
2.在程序第一行加入:
  #! /usr/bin/env python  如果是python3运行的话把 python 换成 python3

60、namedtuple:元组、可以看作字典,通过名字进行访问,其中值不能改变
#####
from collections import namedtuple
Person = namedtuple(‘Person‘,‘name age‘)
obj = Person(‘Tom‘,12)
print(obj.name)
print(obj.age)
#####

61、python之collections之counter
Counter:计数器,用于追踪值出现的次数
######
from collections import Counter
obj = Counter("aaabbbccc")
print(obj) #Counter({‘a‘: 3, ‘b‘: 3, ‘c‘: 3})
######

62、deque 双向队列
######
import collections
d = collections.deque()
d.append(1)往右边添加一个元素
d.appendleft(2)往左边添加一个元素
######

63、selenium
selenium 是一个 web 的自动化测试工具

64、enumerate()
函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据下标和数据
seq = [‘one‘, ‘two‘, ‘three‘]
for i, element in enumerate(seq):
print i, element

0 one
1 two
2 three

65、pickle.dumps


66、urljoin


67、pip install -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com 包名

68、pm2设置开机启动程序
sudo pm2 start xxxx // 启动服务
sudo pm2 save // 保存服务
sudo pm2 startup // 把已启动服务加到systemd中
sudo systemctl reboot // 重启,发现之前的服务都已经启动
sudo pm2 unstartup systemd // 删除自动启动服务

pm2 logs id 查看日志
pm2 show id 查看程序详细情况

pm2 start app.js --name="api" 重命名