百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

又有几个新的Python小技巧分享,新手赶紧了解下

toyiye 2024-06-27 01:03 10 浏览 0 评论

今天这篇文章为大家带来几个Python使用的小技巧:

  • 快速生成依赖文件
  • 文件路径处理
  • 通过set将对象去重
  • 单元测试unitest捕获异常

快速生成依赖文件

Python通过requirements.txt来管理项目所依赖的库,通过pip install -r requirements.txt命令可以直接安装项目所需要的依赖文件。

常见的requirements.txt生成方法由两种

  • 原生pip工具pip freeze > requirements.txt,这种方法会将当前环境中所安装的库全部导出,即使你在项目中没有使用,只是之前实验时安装的依赖库。
  • 第三方工具pipreqs requirements.txt --encoding=utf-8,该工具使用前需要安装pip install pipreqs,pipreqs的优点它会扫描项目的依赖,只导出使用的依赖;pipreqs还可以指定扫描目录pipreqs ./ --encoding=utf-8。

文件路径处理

Python中常见的文件路径处理方式是通过os.path进行处理。

 1In[2]:?import?os
 2#?获取当前目录的绝对路径
 3In[3]:?os.path.abspath('./')
 4Out[3]:?'D:\\Work\\CommonTools'
 5#?进行路径拼接
 6In[4]:?os.path.join(os.path.abspath('./'),'new_file.py')
 7Out[4]:?'D:\\Work\\CommonTools\\new_file.py'
 8#?获取父目录
 9In[5]:?os.path.abspath(os.path.dirname(os.getcwd()))
10Out[5]:?'D:\\Work'
11#?获取文件后缀名
12In[6]:?os.path.splitext('new_file.py')[-1]
13Out[6]:?'.py'

os.path处理文件路径时,比较复杂、难用,因此可以使用pathlib替代os.path。

 1In[2]:?import?pathlib
 2#?获取当前目录的绝对路径
 3In[3]:?path?=?pathlib.Path('./')
 4In[4]:?path=path.absolute()
 5In[5]:?path.as_posix()
 6Out[5]:?'D:/Work/CommonTools'
 7#?进行路径拼接
 8In[6]:?file_path?=?path?/?'new_file.py'
 9In[7]:?file_path.as_posix()
10Out[7]:?'D:/Work/CommonTools/new_file.py'
11#?获取父目录
12In[8]:?path.parent
13Out[8]:?WindowsPath('D:/Work')
14#?获取文件后缀名
15In[9]:?file_path.suffix
16Out[9]:?'.py'
17#?列出当前目录下的py文件
18In[13]:?list(path.glob('*.py'))
19Out[13]:?[WindowsPath('D:/Work/CommonTools/tools.py')]

更多os.pah库和pathlib库的方法对照,请查看官方文档。

通过set将对象去重

通过set将对象去重要求对象必须实现三个方法:

  • eq:判断两个对象是否相等。
  • ne:判断两个对象是否不等。
  • hash:生成对象的hash值。

set内部可以视作为字典,以对象的hash值作为键,通过hash来判断对象是否重复。但是hash值可能出现冲突,因此还需在hash值相同时,对比两个对象是否相等,这也是为什么需要实现这三个方法的原因。

 1In[2]:?class?Person(object):
 2???...:????def?__init__(self,?name,?age):
 3???...:????????self._name?=?name
 4???...:????????self._age?=?age
 5???...:
 6???...:????def?__eq__(self,?other):
 7???...:????????if?isinstance(other,?Person):
 8???...:????????????return?(self._name?==?other._name)?and?(self._age?==?other._age)
 9???...:????????else:
10???...:????????????return?False
11???...:
12???...:????def?__ne__(self,?other):
13???...:????????return?not?self.__eq__(other)
14???...:
15???...:????def?__hash__(self):
16???...:????????return?hash(self._name?+?str(self._age))
17???...:
18???...:????def?__repr__(self):
19???...:????????return?f'{self._name}:{self._age}'
20???...:????
21In[3]:?p1?=?Person('martin',?24)
22???...:p2?=?Person('martin',?24)
23In[4]:?set([p1,?p2])
24Out[4]:?{martin:24}
25In[5]:?p2?=?Person('martin',?25)
26In[6]:?set([p1,?p2])
27Out[6]:?{martin:24,?martin:25}


单元测试unitest捕获异常

单元测试unitest中提供了两个方法用于捕获异常,判断异常信息是否符合预期:

  • assertRaises():只支持指定异常判断。
  • assertRaisesRegex(异常类型,异常信息正则表达式,测试方法,参数):支持匹配异常信息。
 1import?unittest
 2
 3def?divide_exactly(a,?b):
 4????return?a?//?b
 5
 6class?MyTestCase(unittest.TestCase):
 7????def?test_division(self):
 8????????self.assertEqual(divide_exactly(6,?6),?1)
 9
10????????#?捕获指定异常
11????????self.assertRaises(ZeroDivisionError,?divide_exactly,?5,?0)
12????????#?可以作为上下文管理器使用
13????????with?self.assertRaises(ZeroDivisionError):
14????????????divide_exactly(5,?0)
15
16????????#?捕获指定异常
17????????self.assertRaisesRegex(ZeroDivisionError,?'integer?division?or?modulo?by?zero',?divide_exactly,?5,?0)
18????????#?可以作为上下文管理器使用
19????????with?self.assertRaisesRegex(ZeroDivisionError,?'integer?division?or?modulo?by?zero'):
20????????????divide_exactly(5,?0)
21
22
23if?__name__?==?'__main__':
24????unittest.main()

如果你还是迷茫到底如何系统的学习Python,没关系!今天分享的干货一定能帮助到你的问题。

小编精心为大家整理了Python视频教程,让你不用再纠结。

领取方式:

如果想获取这些学习资料,先关注我然后私信小编“01”即可免费领取!(私信方法:点击我头像进我主页有个上面有个私信按钮)

如果这篇文章对你有帮助,请记得给我来个评论+转发

相关推荐

「linux专栏」top命令用法详解,再也不怕看不懂top了

在linux系统中,我们经常使用到的一个命令就是top,它主要是用来显示系统运行中所有的进程和进程对应资源的使用等信息,所有的用户都可以使用top命令。top命令内容量丰富,可令使用者头疼的是无法全部...

Linux 中借助 perf 对 php 程序模拟CPU高的案例分析

导语本文是一篇Linux借助工具分析CPU高的优化案例,没有任何干货内容,很详细的展示了优化CPU高的具体步骤,非常适合初中级读者阅读!...

centos漏洞处理方法(centos podman)

centos服务器最近有诸多漏洞,修复命令及对应的漏洞整理后,分享给大家RHSA-2020:1176-低危:avahi安全更新yumupdateavahi-libsRHSA-2017:326...

Linux上的free命令详解(Buffer和Cache)

解释一下Linux上free命令的输出。下面是free的运行结果,一共有4行。为了方便说明,我加上了列号。这样可以把free的输出看成一个二维数组FO(FreeOutput)。例如:FO[2][1]...

linux 命令行之你真的会用吗?--free 基本用法篇

free命令行统计内存使用率及swap交换分区的使用率数据。是由sourceforge负责维护的,在ubuntu上其包名为procps,这个源码包中,除了free还有ps,top,vmstat,ki...

kong api gateway 初体验(konga github)

kongapigateway初体验(firstsight?)。Kong是一个可扩展的开源API层(也称为API网关或API中间件)。Kong运行在任何RESTfulAPI的前面,并通过插件...

在Ubuntu下开启IP转发的方法(ubuntu20 ip)

IP地址分为公有ip地址和私有ip地址,PublicAddress是由INIC(internetnetworkinformationcenter)负责的,这些IP地址分配给了注册并向INIC提...

基于 Kubernetes 的 Serverless PaaS 稳定性建设万字总结

作者:许成铭(竞霄)数字经济的今天,云计算俨然已经作为基础设施融入到人们的日常生活中,稳定性作为云产品的基本要求,研发人员的技术底线,其不仅仅是文档里承诺的几个九的SLA数字,更是与客户切身利益乃...

跟老韩学Ubuntu Linux系列-sysctl 帮助文档

sysctl一般用于基于内核级别的系统调优,man帮助手册如下。...

如何在 Linux/Unix/Windows 中发现隐藏的进程和端口

unhide是一个小巧的网络取证工具,能够发现那些借助rootkit、LKM及其它技术隐藏的进程和TCP/UDP端口。这个工具在Linux、UNIX类、MS-Windows等操作系统下都...

跟老韩学Ubuntu Server 2204-Linux性能管理-uptime指令帮助手册

uptime指令是每个从事Linux系统工作的相关同学必知必会的指令之一,如下是uptime指令的帮助手册。UPTIME(1)...

Openwrt+Rclone+emby+KODI搭建完美家庭影音服务器

特别声明:本篇内容参考了波仔分享,在此表示感谢!上一篇《Openwrt+emby+KODI搭建家庭影音服务器》只适用影音下载到本地的情形,不能播放云盘中的影音,内容较少,缺少了趣味性,也不直观。...

Linux Shell脚本经典案例(linux shell脚本例子)

编写Shell过程中注意事项:开头加解释器:#!/bin/bash语法缩进,使用四个空格;多加注释说明。命名建议规则:变量名大写、局部变量小写,函数名小写,名字体现出实际作用。默认变量是全局的,在函数...

解决 Linux 性能瓶颈的黄金 60 秒

如果你的Linux服务器突然负载暴增,告警短信快发爆你的手机,如何在最短时间内找出Linux性能问题所在?来看Netflix性能工程团队的这篇博文,看它们通过十条命令在一分钟内对机器性能问题进行诊断。...

跟老韩学Ubuntu Server 2204-Linux性能管理-vmstat指令帮助手册

vmstat可查看ubuntlinux的综合性能,是每个从事Linux人员必知必会、需掌握的核心指令之一。vmstat指令帮助手册如下。VMSTAT(8)...

取消回复欢迎 发表评论:

请填写验证码