Python
天天卡丁
这个作者很懒,什么都没留下…
展开
-
python每日学19: 类vs字典
背景:今天继续学习《python学习手册》第27章《类代码编写基础》,今天着重学习一小段的内容:类vs字典,页码是798-801。类的第一种用法,直接给类添加变量,相当于存储数据。这个比用字典和元组还方便一些,会少一些符号编码。尽管我们也可以把函数存储到字典中,但再也没有比类更加自然和有着良好结构的地方。类的第二种用法,给实例添加变量,这种方法可以记录多条数据,调用也很方便。字典、元组、类在记录数据时有一定的相似之处,有时可以互相替换使用。原创 2024-01-30 15:30:29 · 226 阅读 · 0 评论 -
python每日学18:类中最外层定义的属性与初始化方法__init__中定义的属性的区别
背景:最近学习类的知识,有点好奇类中直接定义的属性与在初始化方法__init__中定义的属性有何区别?上面的代码可以看出,__init__中定义的属性只可以被实例调用,不可以被类调用。即使在__init__中给name属性了一个默认值,通过类也不能调用。那么在在初始化方法__init__中定义的属性呢?原创 2024-01-16 21:52:23 · 495 阅读 · 0 评论 -
python每日学16:世界上最简单的 Python 类
可以完全在类语句之外,通过赋值变量名给这个类增加属性。换句话说,即使没有实例,类本身也是对象。背景:今天继续学习《python学习手册》第27章《类代码编写基础》,今天着重学习一小段的内容:世界上最简单的 python 类。上面这些代码表明,在类外部可以为类添加属性,并且效果等同于在内部定义,这跟其他语言(比如说java)不一样。这一小段的内容,我觉得很有助于了解python类的底层逻辑,所以值得拿一篇专门用来学习。Python 中的OOP 其实就只是在已连接命名空间的对象内寻找属性而已。原创 2024-01-12 15:22:39 · 416 阅读 · 0 评论 -
python每日学15:一些类的简单示例
背景:背景:今天继续学习《python学习手册》第27章《类代码编写基础》,今天学习内容实践第27章的一些例子。本文的示例主要是类的定义与调用。原创 2024-01-11 23:13:51 · 370 阅读 · 0 评论 -
python每日学12:面向对象的编程
背景:最近有些时间,打算把python每日学的计划继续执行起来。由于不知道从何入手,就暂定从学习《python学习手册》开始,这本书也是python领域的一本权威著作,各方面都写的非常详细,读起来很有帮助,就是篇幅有点多,一共有1467页。今天学习的是该书第26章《OOP:宏伟 蓝图》。原创 2024-01-08 16:08:59 · 394 阅读 · 0 评论 -
python每日学11:xpath的使用与调试
背景:最近在使用selenium 模拟浏览器作一些常规操作,在使用selenium的过程中接触到的一种定位方法,叫xpath, 这里说一下使用心得。首先,我觉得如果只是简单使用的话是不用详细了解具体的语法规则的。原创 2023-12-15 21:53:28 · 602 阅读 · 0 评论 -
python每日学10:关于python实用版本的选择
用python也有好几年了,也会经常安装python,因为有工作需要,可能在各个地方使用python,自己的电脑也经常重装,重装后会装python,还有的时候,装的包太多了,影响整个环境的使用(都是小项目,不想用虚拟环境)。我目前用的就是32位的3.8.10版本的python,因为我经常会在不同电脑上使用python,为了达到代码和环境的一致性,我选用了这个版本。至于为什么用3.8.10版本的,而不用更后面的,是因为在python官网上没有找到可供下载 更新版本windows安装包。原创 2023-12-13 10:23:29 · 3131 阅读 · 0 评论 -
每日10行代码182:用pyqt5实现在helloworld
学习背景:有点想用python写一个番茄计时法的程序,所以先学习一下怎么做一个界面。经过挑选,决定用pyqt5来做。其实这段简单的代码还是有值得一看的地方的,有一些地方是需要进一步深入研究的。,就不是一个很好懂的语句。以后有空再详细研究下。原创 2023-08-29 22:51:49 · 234 阅读 · 0 评论 -
每日10行代码180:flask中用escape来防止html逃逸,避免xss攻击
其实我最开始的代码就是hello_world3,但是输了后发现报错,原因是这一串js代码里有斜线,而flask把斜线当成路由的分隔标志。正确的应该是像hello_world1中那样。继续学习flask,今天学到了:https://flask.palletsprojects.com/en/2.2.x/quickstart/#html-escaping。因为flask的路由函数接收到内容后会默认把他当成html来解析,这样就有可能产生安全问题。这节讲了一escape这个函数,我写了一小段代码来测试下。原创 2023-03-26 16:11:26 · 916 阅读 · 0 评论 -
每日10行代码179:用flask写hello world-2
前段时间跟着w3cschool学习flask,结果学到后面了(主要是flask wtf和flask_sqlalchemy那块),各种报错,解决了一个错误又会产生另一个错误,估计是因为flask版本的原因,也不知道w3cschool用的是啥版本,看来跟着那个学是学不下去了。实际上,官网这个app是不能直接运行的,直接python hello.py 程序会运行,但不会有任何显示,也不会建立web服务器,因为这段代码里只定义了一个程序,但没有语句要让这个程序跑起来,也就是没有执行的语句。原创 2023-03-25 17:09:31 · 83 阅读 · 0 评论 -
python每日学7:包的__init__.py文件作用,python换行
前言:这里说下我目前的学习资料,这个是我好久前买的一个教程,名字是“全面系统Python3.8入门+进阶 (程序员必备第二语言)”具体是哪个网站就不发了,因为可能涉嫌广告。但是括号和反斜线都有一定的限制,有时候不一定能使用。比如print中的字符串太长。原创 2022-10-29 16:58:25 · 274 阅读 · 0 评论 -
python每日学6:包、模块与导入
这说明,做与不做还是有很显著的区别的。虽然的的文章质量不高,但总会对一些人有那么一些小小的帮助。平常没写博客时,一般都是100到200的访问量,写了两天博客后,有300左右的访问量。接上一章:包和模块的引入,大大提高了代码的组织能力,在做大点项目的时候很有必要。又写了两天的博客了,博客访问量昨天有明显的上升。原创 2022-10-28 15:19:30 · 148 阅读 · 0 评论 -
python每日学5:python工程(大型项目)的组织架构:包、模块、类、方法
题外话:在大型项目中,往往一个个模块已经不够组织起项目了,就比如一个文件夹下放了上千个文件 ,那想找到某一个文件就会变得困难。管理学中有种说法,一个管理者最适合管理 的对象是7个。假如程序的基本单元是函数,一个类包含7个函数 ,一个模块包含7个类,一个包包含7个模块,那么整体可以包含7。考虑到包还可以有子包,另外管理文件 跟管人还是有区别 的,那么把层级提高 一层,就是总共有10。一般情况 下,10000个函数也足以完成 一个一般项目吧。10*10 =10000个函数。原创 2022-10-27 17:50:56 · 1870 阅读 · 0 评论 -
python每日学4:vscode的安装与基础使用
vscode的安装与基本使用原创 2022-10-26 14:06:05 · 1805 阅读 · 2 评论 -
每日10行代码175:按条件取出且仅取出一条记录
有一个国王,每年要从他所管辖的n个城市的其中一个城市(或区域)找一个王妃,注意是必须找一个且只能找一个王妃。也就是说国王可以按一定的条件找王妃,但如果条件太高了,没有达到标准的,就需要降低标准。如果符合条件的太多了,就需要增高标准,直到符合条件的只有一个人。所有的必须选择且只能选择一个的场景都有这样的需求。不同的是,我提供的例子中,先是选择了一个范围,在不同的范围内,各种情况都可能发生。下面实际解释一下,以上所有条件都不是必须满足的,都是可选的,重要性是按顺序排的。一个人想从众多同类型的产品中选购一个。..原创 2022-08-06 18:04:21 · 103 阅读 · 0 评论 -
每日10行代码174:ctfshow-crypto-easyrsa2 题目解答wp
就比如现实中,得到了一些信息,大家来解密,肯定也没有许多的提示信息,解密很重要的方法就是不断的尝试,去猜,所以ctf里的密码题目也是这样,没有那么多原因。知道把两个n去求下公约数,肯定是最早出这种类型题目的人想出来的,或者最早加密的人为了偷懒,更换模n时,没有重新去找p和q,而是沿用了以前的p或q。那么,再看看题目,给了两组n,e,c那有没有可能两个n有关系呢,可以试下他们有没有公约数,用libnum.gcd求了一下,发现两者还真有公约数,那就相当于对n做了因素分解。...原创 2022-07-21 18:40:56 · 307 阅读 · 0 评论 -
每日10行代码173:测试下yafu的质因数分解能力
从这个输出也可以看出,p到q间间隔了100个素数,而差值为72506,平均每两个素数之间的差是725,72506相对于这个大素数来说还是很小,以致于他们之间比值还是1.0。最后,把p*q的值放到yafu里分解,发现还是可以分解的,只是时间要的很长,在我的电脑上大概花了有一个小时的时间才分解出来。在做rsa题目时,经常会遇到因素分解的问题,而因素分解里有一个很出名的工具叫yafu.当p、q的取值差异过大或过于相近的时候,使用yafu可以快速的把n值分解出p、q值。综上经不严谨的推断,.........原创 2022-07-20 13:57:15 · 1620 阅读 · 1 评论 -
每日10行代码172:今天新学到的奇怪知识——bit_length(),^=,<<=,>>=
python里面要判断一个十进制数的位数,是没有专门的函数的,需要转换成二进制数来判断,但是判断一个二进制数的位数却有一个专门的函数,那就是bit_length(),=也是同样的。原创 2022-07-18 18:16:59 · 104 阅读 · 0 评论 -
每日10行代码171:rsa问题,转换为用python解大整数的一元二次方程
其中t和m均为一个2000以内的较小值,所以我可以用穷举的方法,逐一产生方程并求解,求得的解x即为第一个素数,p,q都是基于x生成的。原创 2022-07-16 23:04:00 · 270 阅读 · 0 评论 -
每日10行代码169:使用xlwings修改excel格式,设置中国式报表
背景:工作上,经常需要从数据库产出报表,由于这种报表需要提交给领导看,所以对格式的要求要比平常高不少,每次设置格式虽然花的时间不算太多,但是长期下来,积少成多,花在格式上的时间就会太多,为了方便调整格式,我写了下面的脚本,主要功能是设置中国式报表,具体为:表格上面有一行合并居中的标题,标题下面左边是查询日期,单位,表格最下面有合计行。...原创 2022-07-05 08:49:04 · 1770 阅读 · 0 评论 -
每日10行代码168:认识np.array对象——np.array数组创建
np.array可以从python列表创建数组:创建整型数组:In [6]: np.array([1,4,2,5,3])Out[6]: array([1, 4, 2, 5, 3])跟python列表 不同的时,Nunpy要求数组必须包含同一类型的数据。如果类型不匹配,Numpy将会隐式的转换。In [7]: np.array([3.14,4,2,3])Out[7]: array([3.14, 4. , 2. , 3. ])上面的整型被转换成了浮点型。如果希望明确设置数组的数据类型,原创 2022-05-12 15:02:30 · 2333 阅读 · 2 评论 -
每日10行代码167:认识pandas中的DataFrame 数据结构4
接上一章:也可以用包含字典的嵌套字典来创建DataFrameIn [5]: pop = {'Nevada': {2001:2.4, 2002: 2.9},'Ohio': {2000:1.5, 2001:1.7, 2002:33.6}}In [6]: frame3 = pd.DataFrame(pop)In [7]: frame3Out[7]: Nevada Ohio2001 2.4 1.72002 2.9 33.62000 NaN 1.5原创 2022-05-09 19:39:21 · 615 阅读 · 0 评论 -
每日10行代码166:认识pandas中的DataFrame 数据结构3
接上一章可以直接对列进行赋值,比如赋一个常量:In [97]: frame2['dept']Out[97]:one NaNtwo NaNthree NaNfour NaNfive NaNsix NaNName: dept, dtype: objectIn [98]: frame2['dept']=16.5In [99]: frame2Out[99]: year state pop deptone原创 2022-05-08 07:34:51 · 661 阅读 · 0 评论 -
每日10行代码165:认识pandas中的DataFrame 数据结构2——DateFrame中的定位
接上一章能创建DateFrame后,自然会关注怎么从DateFrame中取到数据。首先可以用字典的方式:In [73]: frame2Out[73]: year state pop deptone 2000 Ohio 1.5 NaNtwo 2001 Ohio 1.7 NaNthree 2002 Ohio 3.6 NaNfour 2001 Nevada 2.4 NaNfive 2002 Nevada 2.9 N原创 2022-05-04 18:12:28 · 899 阅读 · 0 评论 -
每日10行代码164:认识pandas中的DataFrame 数据结构1——创建DataFrame
DataFrame可以说是pandas的核心,如果熟悉DataFrame对象的各种操作,可以说已经学会了pandas.DataFrame表示的是矩阵的数据表,有点像数据库中的表,它包含已排序的列集合,每一列可以是不同的数据类型。DataFrame既有行索引也有列索引 ,DataFrame一般是二维的,但是可以通过分层索引来展现更高维度的数据。有多种方式可以构建DataFrame,其中最常用的方式是利用包含等长度列表或 Numpy数组的字典来形成DataFrame:In [66]: data = {'s原创 2022-05-02 16:25:20 · 901 阅读 · 0 评论 -
每日10行代码163:认识pandas中的series数据结构3
接上一章Series中有一种自动对齐索引的特性,这也是一种很有用的特性。In [32]: obj3Out[32]:Ohio 35000Texas 71000Oregon 160000Utah 5000dtype: int64In [33]: obj4Out[33]:California NaNOhio 35000.0Oregon 160000.0Texas 71000.原创 2022-05-02 15:45:02 · 1956 阅读 · 0 评论 -
每日10行代码161:认识pandas中的series数据结构1
最近在做数据分析,所以用了一些pandas,但是在用的过程中,深感基础不扎实,不能达到灵活运用的程度,于是想着深入学一下pandas. 那么就先从series开始。Series是pandas里最基础的一个数据结构,虽然DateFrame常常用得更多,但series仍然是pandas里基础的基础,DateFrame中的列也都是一个series.series是一种一维的数组型对象,有点类似于python原生的列表,但考虑到他也有索引,所以跟字典也有一些类似 。In [2]: import pandas a原创 2022-05-01 07:45:39 · 815 阅读 · 0 评论 -
每日10行代码160:对比sql学习pandas-1
sql是我数据分析时经常用到的工具,但是进入更深层的数据分析时,需要用到python,这时就不得不跟pandas打交道。在用pandas时会不自觉的想到怎么用pandas实现一些常用的sql语句功能。示例:假如我有一张公司开具的发票明细数据表fp, pandas中的dataframe对象为df对比一sql实现:select * from fppandas实现:df但是这样数据可能会显示不全,这一点跟sql有所区别,pl/sql里默认是显示所有列和部分行,如果想查看所有行列,可能进行如下操作原创 2022-04-25 21:34:14 · 799 阅读 · 0 评论 -
适合的才是最好的:记一次内网安装feather经历
这两天在搞一个数据分析的小项目,自己想当然的认为数据量大,需要用一个快速保存和读取数据的工具,于是在网上想到了用feather, 于是就开始了一个复杂折腾的安装过程,中间遇到很多坑。第一个坑:由于数据分析环境是在一个内网(不能访问互联网),我想把feather安装到内网环境,于是从网上下了feather包装到内网,没想到他需要的一个pyarrow的依赖包,而这个依赖包没有下。第二个坑:我不知道feather到底需要多少依赖包,怕再出错,想着先在外网安好,然后把所有包都导出,最后整体放到内网环境安装,原创 2022-04-25 06:56:25 · 497 阅读 · 0 评论 -
每日10行代码159:批量修改多个excel文件的列名
背景:接上一章,进一步增强功能,实现批量处理的功能。import openpyxlimport os # 定义一个字典my_dict = {'dth1':'代替换1' ,'dth2':'代替换2' ,'dth3':'代替换3'}def change_column_name(path,my_dict): wb = openpyxl.load_workbook(path) ws = wb.active for c in ws[1]: if c.value.strip(原创 2022-03-27 23:06:39 · 842 阅读 · 0 评论 -
每日10行代码158:用python替换excel中某些文本
业务背景:工作上经常从数据库中导出数据,但是导出的数据列名都是数据库中的字段名,不是中文名称,但是给其他非技术人员用的话,需要把字段名改成中文名,这时就需要一个个的改,当列比较多或者导出的excel比较多时。手动改名就变得比较麻烦。所以我想用python来实现自动修改列名的功能。import openpyxl# 定义一个字典my_dict = {'sfzh':'身份证号' ,'qymc':'企业名称' ,'shxydm':'社会信用代码'}path = r'C:\Users\Administ原创 2022-03-26 23:26:21 · 655 阅读 · 0 评论 -
每日10行代码157:把文件名写入到文件末尾
接前面一节的内容,如果是加密文件的话,可能会考虑连文件名一起加密,但为了加密后能恢复,我就需要氢原始文件名藏在一个地方,所以就有了这个想法,把文件名写入文件末尾。from os.path import basenamepath=r'F:\电影\阳光电影www.ygdy8.com.诛仙Ⅰ.HD.1080p.国语中字.mkv'filename = basename(path)print(filename)filename_bytes = filename.encode('utf-8')prefix原创 2021-12-23 23:04:27 · 222 阅读 · 0 评论 -
每日10行代码156:Python实现简单的文件加密解密
我常用的文件加密解密的工具是宏杰加密,但是前两天打开后发现要强制升级,升级后软件变成vip才能使用,并且不能降级。有一天,我突然想起来自己是不是可以用Python写一个加密的工具。于是就动手开是写了。def encrypt(filepath): f = open(filepath,'rb+') f.seek(0,0) content = f.read(200) print(content) f.seek(0,2) f.write(content) f原创 2021-12-22 16:12:09 · 3686 阅读 · 5 评论 -
每日10行代码155:python中*(星号)用途
星号在python中除了表示乘法的运算符外,还有一种重要的用法:当我们使用函数时,需要传入不定个数的位置参数时,就可以使用*号表示,即*args,以元组形式传入;上面那个是书面解释,不太好懂,看下面的代码:a=[1,2,3]print(a)print(1,2,3)>>>[1, 2, 3]1 2 3print()函数是接受多个参数的,那假如要接收10000个参数呢,总不能像上面第3行的代码一样,一个个写到括号里,但也不能像第2行代码那样,直接把数组写入括号里面,因为原创 2021-09-25 09:26:40 · 668 阅读 · 0 评论 -
每日10行代码151:用python把excel自动导入到oracle
学习到现在,已经需要开始着手写一些小的项目了,但是项目就不适合在博客里每篇文章贴一小段代码。所以,我把项目放到了gitee上,以后关于项目的文章只写项目思路及关键代码。项目名称:excel_to_oracle项目地址:https://gitee.com/zjx0711/excel_to_oracle项目目的:用python实现全自动的把excel格式的数据导入到oracle, 要根据excel的数据自动创建建表语句,并自动把数据插入到数据库,最后把插入错误的数据记录下来。项目背景:把excel导入到原创 2021-06-27 17:48:25 · 457 阅读 · 0 评论 -
每日10行代码150:用python实现定时不重复的截图
接上一章,为解决截图过多的问题,修改了下代码 :import pyautoguifrom datetime import datetimeimport timeimg_first = None while True: time.sleep(2) img_next = pyautogui.screenshot(region=[1000,500,400,400]) # x,y,w,h if img_first == img_next: pass原创 2021-05-14 11:35:40 · 220 阅读 · 0 评论 -
每日10行代码149:用python实现定时截图
背景:工作中遇到一个实际问题,有一个系统 在完成一个需要很长时间的操作时,系统没做日志,也不提示啥时完成的,只能靠人工去看,这时我就想用软件截图来监测一下。import pyautoguifrom datetime import datetimeimport timewhile True: img = pyautogui.screenshot(region=[1000,500,400,400]) # x,y,w,h print(type(img)) capture_原创 2021-05-12 17:05:16 · 349 阅读 · 0 评论 -
每日10行代码148:学习django-修复bug,添加更多测试
前面那个bug是:当 pub_date 为未来某天时, Question.was_published_recently() 应该返回 False,实际却返回True。所以可以这样修改下代码 :def was_published_recently(self): now = timezone.now() return now - datetime.timedelta(days=1) <= self.pub_date <= now修改后重新运行测试:py manage.py原创 2021-05-09 17:03:56 · 166 阅读 · 0 评论 -
每日10行代码147:学习django-创建测试
接上一章,我们创建一个关于“最近发布”的bug修改polls 应用里的 tests.py 文件:import datetimefrom django.test import TestCasefrom django.utils import timezonefrom .models import Questionclass QuestionModelTests(TestCase): def test_was_published_recently_with_future_quest原创 2021-05-09 16:48:20 · 115 阅读 · 0 评论 -
每日10行代码146:用类的方式封装下excel的sheet,获取实际的最大行数及最大列数
今天把前面的代码重构了下,用类的方式来实现下:import openpyxlclass ExcelSheet(object): """comment""" def __init__(self,excel_path, sheet_index=-1): self.wb = openpyxl.load_workbook(excel_path) if sheet_index == -1: self.ws = self.wb.active原创 2021-04-29 17:35:22 · 315 阅读 · 3 评论