Python笔记

个人学习笔记,用于记录使用过程中好用的技巧、好用的库。

1 小知识

1.1 文件操作相关命令

1.1.1 相对路径

在这里插入图片描述

1.1.2 获取当前py文件路径

 target = os.path.dirname(__file__)    # 获取当前文件路径

1.1.3 复制指定文件并重命名

shutil.copy(src, dst)

注意

  • 如果src和dst是同一个文件,就会引发错误,dst必须是可写的,否则将引发错误
  • 如果dst已经存在,就会被替换
  • src和dst的是字符串形式的路径名(可以是相对路径,也可以是绝对路径)

示例

shutil.copy('demo/test.txt', './NewFileName.txt')     # 复制demo内test文件到py文件同级目录下,并重命名为NewFileName

1.1.4 判断路径下是否存在指定文件

os.path.exists('test.txt')    # 判断当前路径下是否存在test.txt文件

函数返回值

  • ture:存在
  • false:不存在

1.1.5 删除指定文件

os.remove('test.txt')    # 删除test.txt

1.2 打包Exe文件

命令:

pyinstaller -F main.py

其中-F:覆盖之前打包的文件
mian.py:需要打包的Python文件
PS:使用pyinstaller 5.10.0以上的版本,低于5.10.0以下会出现一些稀奇古怪的问题(Python版本为3.10)

1.3 删除黑框

对于有UI界面的代码,若不需要黑框(dos窗口),打包时可以使用 -w命令,关闭,具体命令如下:

pyinstaller -F -w main.py

注意:-w中的w是小写

1.3 字符串对齐ljust()|rjust()|center()

在生成C代码时,需要对齐备注等的要求,使用较多。
具体参考:https://blog.csdn.net/qdPython/article/details/111559495

1.4 正则表达式

1.4.1 普通字符

在这里插入图片描述在这里插入图片描述

1.4.2 非打印字符

在这里插入图片描述

1.4.3 特殊字符

在这里插入图片描述
在这里插入图片描述

1.4.4 限定符

限定符用来指定正则表达式的一个给定组件必须要出现多少次才能满足匹配。有 * 或 + 或 ? 或 {n} 或 {n,} 或 {n,m} 共6种。
在这里插入图片描述

1.5.5 识别换行符

增加修饰符参数,可以忽略大小写,换行符等。
eg:

import re

strtest = '''[SRS_Lin_01504] The usage of AUTOSAR architecture shall be applicable for LIN
master nodes (cid:100)'''
pattern = re.compile(r'(\[SRS_Lin_.*)\(cid:100\)', flags=re.S)
testout = pattern.findall(strtest)
print(testout)

打印结果:
在这里插入图片描述

参考资料:https://www.runoob.com/regexp/regexp-syntax.html

1.5 除法取整

1.5.1 向下取整

x = 1
y = 2
r = x // y
输出:0

1.5.2 向上取整

import math
x = 1
y = 2
math.ceil(x / y)
输出1

1.6 替换字符 - 删除指定字符

Python replace() 方法把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次。
①语法

str.replace(old, new[, max])

② 参数
old – 将被替换的子字符串。
new – 新字符串,用于替换old子字符串。
max – 可选字符串, 替换不超过 max 次
③返回值
返回字符串中的 old(旧字符串) 替换成 new(新字符串)后生成的新字符串,如果指定第三个参数max,则替换不超过 max 次。

④ 实例
ss = ‘old old string’
ret = ss.replace(‘old’, ‘new’, 1)
print(ret)

⑤输出

new old string

参考资料:https://www.runoob.com/python/att-string-replace.html

1.7 打印进度条

import sys
import time


def progress_bar(finish_tasks_number, tasks_number):
    """
    进度条

    :param finish_tasks_number: int, 已完成的任务数
    :param tasks_number: int, 总的任务数
    :return:
    """

    percentage = round(finish_tasks_number / tasks_number * 100)
    print("\r进度: {}%: ".format(percentage), "▓" * (percentage // 2), end="")
    sys.stdout.flush()


if __name__ == '__main__':
    for i in range(0, 101):
        progress_bar(i, 100)
        time.sleep(0.05)

效果图
请添加图片描述
参考资料:https://blog.csdn.net/TaoismHuang/article/details/120747536

1.8 字符串从前和从后查找指定字符

	str = '128-312-156'
	char_ = '-'
	# 从头开始找第一个匹配的字符位置
	nPos = str.find(char_ )
	print(nPos)
	# 输出 3
	# 从尾开始找第一个匹配的字符位置
	nPos = str.rfind(char_ )
	print(nPos)
	#输出 7

引用:https://blog.csdn.net/qq_39714045/article/details/115742426

1.9 判断已指定字符串开始/结尾

1.9.1指定字符串开始 - startswith()

startswith() 方法用于检查字符串是否是以指定子字符串开头,如果是则返回 True,否则返回 False。如果参数 beg 和 end 指定值,则在指定范围内检查。
在这里插入图片描述

1.9.2 指定字符串结尾 - endswitch()

endswith() 方法用于判断字符串是否以指定后缀结尾,如果以指定后缀结尾返回True,否则返回False。可选参数"start"与"end"为检索字符串的开始与结束位置。
在这里插入图片描述

1.9.3引用

https://www.runoob.com/python/att-string-startswith.html
https://www.runoob.com/python/att-string-endswith.html

1.10 生成文件夹中所有文件的路径到txt

# -*- coding: utf-8 -*-
# 生成文件夹中所有文件的路径到txt
import os
def listdir(path, list_name):  # 传入存储的list
    for file in os.listdir(path):
        file_path = os.path.join(path, file)
        if os.path.isdir(file_path):
            listdir(file_path, list_name)
        else:
            list_name.append(file_path)
 
list_name=[]
path='D:/PythonProject/data/'   #文件夹路径
listdir(path,list_name)
print(list_name)
 
with open('./list.txt','w') as f:     #要存入的txt
    write=''
    for i in list_name:
        write=write+str(i)+'\n'
    f.write(write)

引用:https://blog.csdn.net/wenqiwenqi123/article/details/102860604

1.11 国内镜像源

镜像源:
清华:https://pypi.tuna.tsinghua.edu.cn/simple
阿里云:http://mirrors.aliyun.com/pypi/simple/
中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
华中理工大学:http://pypi.hustunique.com/
山东理工大学:http://pypi.sdutlinux.org/

使用方法:pip install pdfplumber -i https://pypi.tuna.tsinghua.edu.cn/simple

2 库

2.1 parsel

parsel这个库可以解析HTML和XML,并支持使用Xpath和CSS选择器对内容进行提取和修改,同时还融合了正则表达式的提取功能。parsel灵活且强大,同时也是python最流行的爬虫框架Scrapy的底层支持。

CSS选择器使用

提取CSDN一个页面下面博客的所有链接。具体步骤如下:

①右键,选择“检查”,查看网页代码
在这里插入图片描述
②复制第一篇文件链接,在网页代码中搜索,提取上一级标签的关键字,这里是“column_article_list”
在这里插入图片描述
③复制上一级标签关键字,在搜索栏输入“.column_article_list”搜索
这里只会有唯一的一个匹配项
在这里插入图片描述
使用空格取下级标签,例如“.column_article_list a”表示取column_article_list下面的a标签,如果还需要往下取,继续加“空格+标签名”
在这里插入图片描述
④回到代码
先使用parsel.Selector将响应的数据转换为一个对象,在对象中在使用css选择题提取内容。
这里“::attr(href)”表示去a标签的href属性
.getall():提取整个对象中符合要求的数据
在这里插入图片描述

2.2 编辑word文档 - Python docx

Python docx学习笔记

2.3 提取PDF文档 pdfplumber

Python提取PDF表格(基于AUTOSAR_SWS_CANDriver.pdf)

2.4 界面制作 - PyQt5

Python PyQt5

2.5 虚拟环境 - pipenv or Conda

pipenv和Conda都能完成需求虚拟环境的创建,本人目前只用过pipenv。两者差异如下:
在这里插入图片描述
PS: 感觉Conda更强大一些。
参考资料:
Python虚拟环境(pipenv、venv、conda一网打尽)[通俗易懂]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值