0 安装环境
- 使用PyCharm打开项目时,默认是base环境,如果自定义了环境,需要修改Python Interpreter。
0.1 pip不是内部命令问题
- 查看是否添加环境变量,没有则添加
将C:\Program Files (x86)\Python\Python36-32\Scripts添加到环境变量Path中
原文链接:https://blog.csdn.net/wochunyang/article/details/52312370
1 文件操作
1.1 创建文件和文件夹
1.1.1 创建文件夹
### 创建文件夹
import os
def mkdir(path):
if not os.path.exists(path): #判断是否存在文件夹如果不存在则创建为文件夹
os.makedirs(path) #makedirs 创建文件时如果路径不存在会创建这个路径
print("--- new folder... ---")
print("--- OK ---")
else:
print "--- There is this folder! ---"
file_path = "G:\\xxoo\\test"
mkdir(file_path) #调用函数
import os
folder = os.getcwd()[:-4] + 'new_folder\\test\\'
#获取此py文件路径,在此路径选创建在new_folder文件夹中的test文件夹
if not os.path.exists(folder):
os.makedirs(folder)
1.1.2 创建文件
import os
file = open('C:\\Users\Administrator\\Desktop\\' + 'new' + '.txt','w')
file.close()
1.2 获取文件路径
1.2.1 获取.py文件路径
import os
print(os.getcwd())
1.2.2 获取文件绝对路径
os.path.abspath(file_path)
4 装饰器
4.1 @staticmethod或@classmetho
- 通常来说,我们使用一个类的方法时,首先要实例化这个类,再用实例化的类来调用其方法
- 使用@staticmethod或@classmethod,就可以不需要实例化,直接类名.方法名()来调用。
5 matplotlib
5.1 散点图 matplotlib.pyplot.scatter
matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, *, edgecolors=None, plotnonfinite=False, data=None, **kwargs
- 参数说明:
x, y: float or array-like, shape (n, )
The data positions.
s: float or array-like, shape (n, ), optional
The marker size in points**2. Default is rcParams['lines.markersize'] ** 2
.
c: array-like or list of colors or color, optional
The marker colors.
marker: MarkerStyle
86)
The marker style. marker can be either an instance of the class or the text shorthand for a particular marker. See matplotlib.markers
for more information about marker styles.
alpha: float, default: None
The alpha blending value, between 0 (transparent) and 1 (opaque).
6 错误和异常
6.1 assert断言
- 语法格式如下:
assert expression
等价于:
if not expression:
raise AssertionError
- assert 后面也可以紧跟参数:
assert expression [, arguments]
等价于:
if not expression:
raise AssertionError(arguments)
7 时间与日期
7.1 计算Python的代码块或程序的运行时间
- 方法一
import datetime
start = datetime.datetime.now()
run_function():
# do something
end = datetime.datetime.now()
print (end-start)
- 方法二
import time
start = time.time()
run_function()
end = time.time()
print str(end-start)
- 方法三,推荐使用
import time
start = time.clock()
run_function()
end = time.clock()
print str(end-start)
# Python3.8不再支持time.clock,但在调用时依然包含该方法;需要用用time.perf_counter()替换
7.2 格式化时间,time.strftime(‘%m-%d’, time.localtime())
import time
# 格式化成2016-03-20 11:45:39形式
print time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
# 格式化成Sat Mar 28 22:24:24 2016形式
print time.strftime("%a %b %d %H:%M:%S %Y", time.localtime())
# 将格式字符串转换为时间戳
a = "Sat Mar 28 22:24:24 2016"
print time.mktime(time.strptime(a,"%a %b %d %H:%M:%S %Y"))
8 PyMySQL
8.1 安装
pip3 install PyMySQL
python3 setup.py install
8.2 数据库连接
import pymysql
# 打开数据库连接
db = pymysql.connect("localhost","testuser","test123","TESTDB" )
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()
# 使用 execute() 方法执行 SQL 查询
cursor.execute("SELECT VERSION()")
# 使用 fetchone() 方法获取单条数据.
data = cursor.fetchone()
print ("Database version : %s " % data)
# 关闭数据库连接
db.close()
8.3 增删改查操作
import pymysql
# 打开数据库连接
db = pymysql.connect("localhost","testuser","test123","TESTDB" )
# 使用cursor()方法获取操作游标
cursor = db.cursor()
### 具体执行语句放在此处 ###
# 关闭数据库连接
db.close()
- 插入
# SQL 插入语句
sql = """INSERT INTO EMPLOYEE(FIRST_NAME,
LAST_NAME, AGE, SEX, INCOME)
VALUES ('Mac', 'Mohan', 20, 'M', 2000)"""
try:
# 执行sql语句
cursor.execute(sql)
# 提交到数据库执行
db.commit()
except:
# 如果发生错误则回滚
db.rollback()
- 删除
# SQL 删除语句
sql = "DELETE FROM EMPLOYEE WHERE AGE > %s" % (20)
try:
# 执行SQL语句
cursor.execute(sql)
# 提交修改
db.commit()
except:
# 发生错误时回滚
db.rollback()
- 修改
# SQL 更新语句
sql = "UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE SEX = '%c'" % ('M')
try:
# 执行SQL语句
cursor.execute(sql)
# 提交到数据库执行
db.commit()
except:
# 发生错误时回滚
db.rollback()
- 查询
- fetchone(): 该方法获取下一个查询结果集。结果集是一个对象
- fetchall(): 接收全部的返回结果行.
- rowcount: 这是一个只读属性,并返回执行execute()方法后影响的行数。
# SQL 查询语句
sql = "SELECT * FROM EMPLOYEE \
WHERE INCOME > %s" % (1000)
try:
# 执行SQL语句
cursor.execute(sql)
# 获取所有记录列表
results = cursor.fetchall()
for row in results:
fname = row[0]
lname = row[1]
age = row[2]
sex = row[3]
income = row[4]
# 打印结果
print ("fname=%s,lname=%s,age=%s,sex=%s,income=%s" % \
(fname, lname, age, sex, income ))
except:
print ("Error: unable to fetch data")
9 字符串
9.1 其他类型转为字符串
str()
10 pickle数据持久存储
python的pickle模块实现了基本的数据序列和反序列化。通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储;通过pickle模块的反序列化操作,我们能够从文件中创建上一次程序保存的对象。
10.1 读取\写入 文件
pickle.dump(obj, file, [,protocol])
注解:将对象obj保存到文件file中去。
参数:- protocol为序列化使用的协议版本。0:ASCII协议,所序列化的对象使用可打印的ASCII码表示;1:老式的二进制协议;2:2.3版本引入的新二进制协议,较以前的更高效。其中协议0和1兼容老版本的python。protocol默认值为0。
- file:对象保存到的类文件对象。file必须有write()接口, file可以是一个以’w’方式打开的文件或者一个StringIO对象或者其他任何实现write()接口的对象。如果protocol>=1,文件对象需要是二进制模式打开的。
pickle.load(file)
注解:从file中读取一个字符串,并将它重构为原来的python对象。
参数:- file:类文件对象,有read()和readline()接口。
11 tqdm
Tqdm 是一个快速,可扩展的Python进度条,可以在 Python 长循环中添加一个进度提示信息,用户只需要封装任意的迭代器 tqdm(iterator)。
12 字典dict
12.1 update()
把字典dict2的键/值对更新到dict里。
dict.update(dict2)
12.2 get()
返回指定键的值。
dict.get(key, default=None)
参数:
- key – 字典中要查找的键。
- default – 如果指定键的值不存在时,返回该默认值。
13 字符串str
13.1 strip()
Python strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。
13.2 eval()
eval() 函数用来执行一个字符串表达式,并返回表达式的值。
>>>x = 7
>>> eval( '3 * x' )
21
>>> eval('pow(2,2)')
4
>>> eval('2 + 2')
4
>>> n=81
>>> eval("n + 4")
85
14 列表List
14.1 extend()
extend() 函数用于在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)。
14.2 pop()
去掉列表中的一个元素(默认最后一个元素)
14.3 将list与元组放置在一个list中
each_data=[2,3,4]
data0 = [tuple([0,1])]
for j in each_data:
data0.append(j) # 正确用法 [(0, 1), 4, 5]
data1 = [tuple([0,1])]+each_data # 正确用法 [(0, 1), 4, 5] ,但是要求each_data要为list,不能为ndarray等
data2 =[tuple([0,1]),each_data] # 错误用法,[(0, 1), [2, 3, 4]]
data3 = [[0,1],each_data] # 错误用法 [[0, 1], [2, 3, 4]]
14.4 生成tuple必须从其他序列转为tuple
14.5 list包含数字,不能直接转化成字符串
print(" ".join('%s' %id for id in list1))
14.6 负数索引,从后往前索引
14.7 zip() 同时遍历两个list
15 数字Number
15.1 round()
round() 方法返回浮点数x的四舍五入值。
16 基本语法
16.1 查看变量类型,type()
17 内存管理
17.1 手动释放内存,del + gc.collect()
import gc
del a
gc.collect()
18 Json数据
18.1 Json数据与普通数据的互转
JSON 值可以是:
- 数字(整数或浮点数)
- 字符串(在双引号中)
- 逻辑值(true 或 false)
- 数组(在中括号中)
- 对象(在大括号中)
- null
json.dumps(data) # 对数据进行编码。
json.loads(json_data) #对数据进行解码。