文章目录
- 前言
- 一、基础部分
- 1. 一行写不下,如何换行继续写
- 2. 关于文件相关操作
- 3. Python 异常处理【https://www.runoob.com/python/python-exceptions.html】
- 4. Python格式化输出 %s %d %f【https://blog.csdn.net/weixin_40583388/article/details/78600101】
- 5. matplotlib面向对象绘图
- 6.定制自己的matplotlib style 【https://matplotlib.org/gallery/style_sheets/style_sheets_reference.html】
- 7. python 常用精简代码的函数(lambda、sorted、enumerate、reduce、np.concatenate)
前言
书签的内容越来越多,整理一下。整理内容分为基础部分、bug解决部分、
以下是本篇文章正文内容
一、基础部分
1. 一行写不下,如何换行继续写
- 在一行末尾加上‘\’
- 如果是以逗号连接的,直接换行
另外,在spyder上可以设置自动换行;
2. 关于文件相关操作
- os.listdir(path)
返回指定的文件夹包含的文件或文件夹的名字的列表
注: - 文件名不包含数字时,文件名按字母顺序排列;
- llist.sort(cmp=None, key=None, reverse=False);
直接改变原来的列表,reverse = True 降序, reverse = False 升序(默认);
key – 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序,例子在下面; - sorted(itrearble, cmp=None, key=None, reverse=False)
返回一个新的列表,不改变原来的列表; - os.path.getmtime() 函数是获取文件最后修改时间
- os.path.getctime() 函数是获取文件最后创建时间
代码如下(示例):
import os
dir_list = os.listdir(file_path)
dir_list = sorted(dir_list, key=lambda x: os.path.getmtime(os.path.join(file_path, x)))
# 文件夹名 按数字排序 key的用法
dir_list.sort(key=lambda x: int(x[4:]))
- python中split()、os.path.split()函数用法【来源:https://www.cnblogs.com/foremostxl/p/9363250.html】
str.split(str="", num=string.count(str)).
str – 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。
num – 分割次数。
返回值:返回分割后的字符串列表。
os.path.split():按照路径将文件名和路径分割开
os.path.split(‘PATH’)
PATH指一个文件的全路径作为参数:
如果给出的是一个目录和文件名,则输出路径和文件名 - Python os.access() 方法【来源:https://www.runoob.com/python/os-access.html】
os.access(path, mode);
path – 要用来检测是否有访问权限的路径。
mode –
os.F_OK: 作为access()的mode参数,测试path是否存在。
os.R_OK: 包含在access()的mode参数中 , 测试path是否可读。
os.W_OK 包含在access()的mode参数中 , 测试path是否可写。
os.X_OK 包含在access()的mode参数中 ,测试path是否可执行。
如果允许访问返回 True , 否则返回False。 - 关于Python读取文件的路径中斜杠问题
path1 = r"c:\windows\temp\temp1.txt"
path2 = “c:\\windows\\temp\\temp2.txt”
path3 = “c:/windows/temp/temp3.txt”
这三种都行。
3. Python 异常处理【https://www.runoob.com/python/python-exceptions.html】
异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行。
异常是Python对象,表示一个错误。
当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行。
异常处理
捕捉异常可以使用try/except语句。
try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理。
如果你不想在异常发生时结束你的程序,只需在try里捕获它。
try:
fh = open("testfile", "w")
fh.write("这是一个测试文件,用于测试异常!!")
except IOError:
print "Error: 没有找到文件或读取文件失败"
else:
print "内容写入文件成功"
fh.close()
try-finally 语句无论是否发生异常都将执行最后的代码。
try:
fh = open("testfile", "w")
fh.write("这是一个测试文件,用于测试异常!!")
finally:#无论如何都会执行
print "Error: 没有找到文件或读取文件失败"
另外用户可以触发异常、自定义异常
4. Python格式化输出 %s %d %f【https://blog.csdn.net/weixin_40583388/article/details/78600101】
%[flags][width].[precision]typecode
flags可以有+,-,’ ‘或0。
+表示右对齐。-表示左对齐。’ '为一个空格,表示在正数的左侧填充一个空格,从而与负数对齐。0表示使用0填充,对d有用,对f无用。
width表示显示宽度,precision表示小数点后留几位。
常见格式符:
%s | 字符串 |
---|---|
%d | 十进制整数 |
%f | 浮点数 |
%e | 指数 (基底写为e) |
%E | 指数 (基底写为E) |
5. matplotlib面向对象绘图
网上这方面的帖子还是比较少,绘图的教程是基于函数式绘图,一旦子图多了或者想要实现一些特定的功能,这时学会面向对象绘图还是很有必要的。下面进行笔记整理。
- 对象有哪些?
图源自【https://matplotlib.org/api/artist_api.html#matplotlib.artist.Artist】
下面说明一下常用的类,- Figure
Top level Artist, which holds all plot elements.这是官方文档的定义,也很容易看出来,同时从图中看出Figure没有子类,也就是说日常使用中一般起到声明的作用。
打个比方就是你要画图,那么你得铺开一张纸,即写下plt.figure(),其returns的官方解释:
- Figure
The Figure instance returned will also be passed to new_figure_manager in the backends, which allows to hook custom Figure classes into the pyplot interface(将自定义Figure类挂接到pyplot界面中). Additional kwargs will be passed to the Figure init function.
下面用这张图引出另两个常用的类——Axes、Axis
-
Axes
从上图可以看出,Figure与Axes以及Axes与Axis的关系。
-
Axis
-
其他
有用的小技巧如简写
-
Third party packages【https://matplotlib.org/thirdpartypackages/index.html】
推荐几个,animatplot、gif 以及 sviewgui.
animatplot is a library for producing interactive animated plots with the goal of making production of animated plots almost as easy as static ones.
gif is an ultra lightweight animated gif API.
sviewgui is a PyQt-based GUI for visualisation of data from csv files or pandas.DataFrames.
6.定制自己的matplotlib style 【https://matplotlib.org/gallery/style_sheets/style_sheets_reference.html】
定制自己的matplotlib style 还是很有必要的,特别是需要论文出图,或者有特殊作图要求。
下面开始介绍:
matplotlib自带了26种style,存在了style packages里面,具体位置在 \Lib\site-packages\matplotlib\mpl-data\stylelib. 调用的方法是
plt.style.use(‘ggplot’)
其中‘ggplot’是其中一种风格。
在自己定制之前,可以看看官方的mplstyle文件,如图
链接有26种风格具体展示
后面我会贴出一些论文的定制文件,敬请期待~
7. python 常用精简代码的函数(lambda、sorted、enumerate、reduce、np.concatenate)
-
匿名函数lambda的函数用法和排序用法【https://www.cnblogs.com/test123/p/10622956.html】
首先,我们可以利用lambda创建简单函数
lambda语句中,冒号前是参数,可以有多个,用逗号隔开,冒号右边的返回值,lambda返回函数对象。
我个人认为lambda更重要的作用是结合sorted/sort进行排序。
顺便贴一个sort与sorted的区别sort 直接改变list,且只能改变list
sorted 可以对任何iterable的对象排序,且产生新的变量,不改变作用的对象
import os
path = 'C:xx/xx/xx'
filesname = os.listdir(path)
filesname.sort(key=lambda x: int(x[28:32]),reverse=False)# False,按文件名的28到32进行升序排列(默认);True,降序。
# 也可以对字典进行排序
dict0 = [{'NAME':'AS','AGE':17},{'NAME':'EF','AGE':20},{'NAME':'BD','AGE':21},{'NAME':'GH','AGE':20},{'NAME':'WR','AGE':21},{'NAME':'TY','AGE':21}]
dict1=sorted(dict0,key=lambda x:x['NAME'])#按字母的ASCII大小升序排列
dict2=sorted(dict0,key=lambda x:(x['AGE'],x['NAME']))#先按年纪大小升序排列,若年纪一样大就按字母的ASCII大小升序排列
print(dict1)
print(dict2)
输出的结果如下图:
- enumerate() 函数【https://www.runoob.com/python/python-func-enumerate.html】
enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
>>>Sequence = ['A', 'B', 'C']
>>> for i, element in enumerate(sequence):
... print i, element
...
0 A
1 B
2 C
- reduce 函数的使用
使用前需要
from functools import reduce
下面贴我个人的理解
>>>lst = [1,2,3,4]
>>>temp = reduce(lambda x,y: x*y, lst)
# 工作过程是:1)x=1, y=2-->x*y=2
# 2) x=2【1)中的结果】, y=3-->x*y=6
# 3) x=6, y=4-->x*y=24
>>>print(temp)
>>>24
有了上面的解释,对reduce的定义就可以理解了
reduce(function, sequence [, initial] )
inital 指函数变量的初值,按照上例指的是x=initial
一般地我们会对可遍历对象特别是字典中的键值操作时,就不用写for循环了,代码变得十分简洁。
>>>h = {1: 3, 2: 1, 3: 2}
>>>a = reduce(lambda x, value:x + value * (value - 1), h.values(), 0)
>>>print(a)
>>>8