python学习笔记
1. 环境搭建
anaconda + pycharm
anaconda:Anaconda | Individual Edition(历史版本网址:Index of /)
pycharm:Download PyCharm: Python IDE for Professional Developers by JetBrains
1.1 pycharm基础操作与设置
1.1.1 快捷键
自动对齐:Ctrl + Alt + L
注释与取消注释:Ctrl + /
查找:Ctrl + F
返回到上一次跳转地方:Ctrl + Alt + ←(左箭头)
返回到下一次跳转地方:Ctrl + Alt + →(右箭头)
1.1.2 新建文件模板设置
File -> Settings -> Editor -> File and Code Templates -> Python Script
在新建python文件(File -> New -> Python File)的时候,文件头部就会自动生成文件名、作者、时间等信息
2. 基础语法
基础语法:Python3 教程 | 菜鸟教程
2.1 函数定义与使用
2.2 类定义与使用
2.3 print
2.3.1 格式化打印
推荐使用format打印,不在使用%格式化打印
# -*- coding: utf-8 -*-
# @File : print_test.py
# @Author : xxx
# @Time : xxx
if __name__ == "__main__":
a0 = 0
a1 = 1
b0 = 0.1
b1 = 0.2
# %格式化打印
print("print_test 1: %d, %d" % (a0, a1))
print("print_test 2: %.2f, %.2f" % (b0, b1))
# format打印(推荐使用)
print("print_test 3: {}, {}".format(a0, a1))
print("print_test 4: {:.2f}, {:.2f}".format(b0, b1))
print("print_test 5: {:.2%}, {:.2f}%".format(b0, b1 * 100)) # 注意b1*100
print("print_test 6: {0}, {1}, {1}, {0}".format(a0, a1)) # 可以指定顺序
输出为:
2.3.2 print不换行
Python3 print的函数原型:print(*objects, sep=‘ ’, end=‘\n’, file=sys.stdout, flush=False)
- objects ---- 输出的对象,
- sep ---- 分隔对象,默认为空格
- end ---- 输出结尾参数,默认为\n
- file ---- 定义流输出的文件,默认为sys.stdout
- flush ---- 是否立即把内容输出到流文件,不作缓存,默认为False
end='\r', flush=True
示例代码:
for i in range(100000):
print("Percent {:.2%}".format(i/100000), end='\r', flush=True)
pycharm不能动态刷新print,可以使用power shell(Shift + 鼠标右键 -> 点击“在此处打开Powershell窗口(S)”),运行结果如下:
3. 文件读写
3.1 路径处理
1、获取当前脚本路径(调用python解释器的脚本):sys.path[0]
2、路径拼接:os.path.join(xxx1, xxx2, ...)
3、路径、文件名分割:os.path.split(xxx)
4、分割文件名和后缀:os.path.splitext(xxx)
测试代码如下:
import os
import sys
if __name__ == "__main__":
# 获取当前脚本路径
path1 = sys.path[0] # 调用python解释器的脚本所在的目录,与py文件路径有关
print(path1)
path2 = os.getcwd() # 当前的执行目录,与py文件路径无关
print(path2)
# 路径拼接
test_file = os.path.join(path1, "test_dir", "test.txt")
print(test_file)
# 路径、文件名分割
(file_path, file_name) = os.path.split(test_file)
print("{}\t{}".format(file_path, file_name))
# 分割文件名和后缀
(name, extension) = os.path.splitext(file_name)
print("{}\t{}".format(name, extension))
测试代码如下:
3.2 读写txt文件
基本读写代码如下,
import os
import sys
if __name__ == "__main__":
base_path = sys.path[0]
test_file = os.path.join(base_path, "test_dir", "test.txt")
# 文件写测试
with open(test_file, 'w') as f_out:
f_out.write("test1\n")
f_out.write("test2\n")
f_out.write("test3\n")
# 文件读测试
with open(test_file, 'r', encoding='utf-8') as f_in:
# data = f_in.read()
# first_line = f_in.readline()
# lines = f_in.readlines()
for line in f_in:
print(line)
测试结果如下:
读写模式
r : 读取文件,若文件不存在则会报错
w: 写入文件,若文件不存在则会先创建再写入,会覆盖原文件
a : 写入文件,若文件不存在则会先创建再写入,但不会覆盖原文件,而是追加在文件末尾
rb, wb: 分别于r,w类似,但是用于读写二进制文件
r+ : 可读、可写,文件不存在也会报错,写操作时会覆盖
w+ : 可读,可写,文件不存在先创建,会覆盖
a+ : 可读、可写,文件不存在先创建,不会覆盖,追加在末尾
读文件遇到UnicodeDecodeError错误
忽略非法字符,如下方式打开文件
open(test_file, 'r', encoding='utf-8', errors="ignore")
参考:
https://blog.csdn.net/yeewingho/article/details/106417412
不同读文件方法
方法 | 返回类型 | 描述 |
read | str | 读取整个文件,以原格式返回全部文本 |
readline | str | 读取首行,可以设置读取字节数:readline(size) |
readlines | list | 读取整个文件,以列表返回,每个元素为一行文本 |
注:如果需要逐行读取,建议使用下面的方法,减少内存开销
with open(test_file, 'r', encoding='utf-8') as f_in:
for line in f_in:
print(line)
3.3 读.mat文件
3.4 读写excel文件
3.4.1 openpyxl
3.4.2 xlrd/xlwt
4. 字符串处理
4.1 字符分割
split
4.2 正则搜索
str-int转化
搜索统计