python编程技巧

  • 一、 基础
    • 1. 循环输入(连续输入2次回车退出)
    • 2. 跳出多重循环方法
    • 3. 子类调用父类方法
    • 4. 字典排序
    • 5. 判断文件(夹)、路径是否存在
    • 6. 返回句子仅单词首字母大写,及句子各单词首字母缩写
    • 7. python三元赋值
    • 8. 判断列表包含关系
    • 9. python字符串格式化补充(对齐、补位)
  • 二、 进阶
    • 1. python遍历文件夹
    • 2. 解决python读写文件中文乱码问题
    • 3. 打包
    • 4. 读ini文件
    • 5. python获取文件路径
    • 6. python获取日期时间

一、 基础

1. 循环输入(连续输入2次回车退出)

while True:try:a = int(input())e, f = map(int, input().split())s = input()ls = s.split()print(f'a:{a}, e:{e}, f:{f}, ls:{ls}')except EOFError:break

2. 跳出多重循环方法

PS:网上抄来得,链接不知道了,侵权删【手动哭泣】

  1. 自定义异常类
class OutFloor(Exception):try:for i in range(100):for j in range(1000):if i == j == 5:raise OutFloor()print(f’{i} --- {j}’)except OutFloor:pass
  1. 将循环封装成函数,return
def func():
for i in range(100):for j in range(1000):if i == j == 5:returnprint(f’{i} --- {j}’)
  1. 设置状态变量
time1 = time.time()
flag = 0
for r in range(1, 2200):for c in range(1, 13):if r+c == 12:print(r)print(c)flag = 1breakif flag == 1:break
print(time.time()-time1)

3. 子类调用父类方法

  1. 使用super方法
class Test(object):
def __init__(self):super(Test, self).__init__()
  1. 调用未绑定的父类构造方法
class Student(Person):
def __init__(self):Person.__init__(self)

4. 字典排序

  1. 根据key值排序
def sort_dic(dic):res = {}keys = dic.keys()skeys = sorted(keys)for i in skeys:res.setdefault(i, dic[i])     return res

5. 判断文件(夹)、路径是否存在

  1. 判断是否是文件
os.path.isFile(path)
  1. 判断是否是文件夹
os.path.isdir(path)
  1. 判断路径是否存在
os.path.exists(path)

应用:判断并创建文件夹

if not os.path.exists(new_folder):os.mkdir(new_folder)

6. 返回句子仅单词首字母大写,及句子各单词首字母缩写

import re
def get_enum_class_name(s): # ZHU LING,返回ZhuLing,ZLWords = [str.capitalize() for str in s.split(' ')]res = "".join(Words)pre = "".join(re.findall('[A-Z]', res))return res,pre

7. python三元赋值

s = V1 if condition else V2
a = “Equal” if 3==3 else “Not Equal”    # a=Equal

8. 判断列表包含关系

a = ['错把晚风当作你', '谁在幸福呢', '还是会怪你 (Remix)', '该隐', '前方之前', '青灯案']'
b = ['错把晚风当作你', '谁在幸福呢', '还是会怪你 (Remix)', '该隐']
set(a)>=set(b)    #Truea+b = ['错把晚风当作你', '谁在幸福呢', '还是会怪你 (Remix)', '该隐', '前方之前', '青灯案', '错把晚风当作你', '谁在幸福呢', '还是会怪你 (Remix)', '该隐']

9. python字符串格式化补充(对齐、补位)

PS:网上抄来得,链接不知道了,侵权删【手动哭泣】

  1. % 格式化—普通格式化
name = 'Jack'
age = 14
print('He is %s' % name)
print('He is %s' % "Jack")
print("%s,he is %d years old" % (name, age))
print("%s,he is %d years old" % ('jcy', 14))
# %d–⼗进制, %f–默认6位⼩数, %0x 16进制
** 指定长度打印----数值和字符串⼀样的------%**
**%10d**  右对齐,不⾜10位左边补空格
**%-10d**  左对齐,不⾜10位右边补空格;
**%010d**    不⾜10位,左侧补0
**字符串也同数值:**
**%10s**  右对齐,不⾜左边补空格
**%-10s**  左对齐,不⾜右边补空格

A = [[“Alice”, 1000], [“Bob”, 20000]]
print(“%10s的⼯资是:%6d¥” % (A[0][0], A[0][1])) # 右对齐,⼈名不⾜10位,左侧补空格,薪资右不⾜6位,左侧补空格
print(“%-10s的⼯资是:%-6d¥” % (A[0][0], A[0][1])) # 左对齐,⼈名不⾜10位,右侧补空格,薪资不⾜6位,左侧补空格
print(“%-10s的⼯资是:%06d¥” % (A[0][0], A[0][1])) # ⼈名左对齐,⼈名不⾜10位,右侧补空格,薪资左对齐,不⾜6位,左侧补0

A = [[“Alice”, 1000], [“Bob”, 20000]]
print(“{0:>10s}的⼯资是:{1:>6d}¥”.format(A[0][0], A[0][1])) # 右对齐,⼈名不⾜10位,左侧补空格,薪资右不⾜6位,左侧补空格
print(“{0:<10s}的⼯资是:{1:<6d}¥”.format(A[0][0], A[0][1])) # 左对齐,⼈名不⾜10位,右侧补空格,薪资不⾜6位,左侧补空格
print(“{0:<10s}的⼯资是:{1:>06d}¥” .format(A[0][0], A[0][1])) # ⼈名左对齐,⼈名不⾜10位,右侧补空格,薪资左对齐,不⾜6位,左侧补0

print(f"{A[0][0]:>10s}的⼯资是:{A[0][1]:>6d}¥") # 右对齐,⼈名不⾜10位,左侧补空格,薪资右不⾜6位,左侧补空格
print(f"{A[0][0]:<10s}的⼯资是:{A[0][1]:<6d}¥") # ⼈名左对齐,⼈名不⾜10位,右侧补空格,薪资不⾜6位,左侧补空格
print(f"{A[0][0]:<10s}的⼯资是:{A[0][1]:>06d}¥" ) # ⼈名左对齐,⼈名不⾜10位,右侧补空格,薪资左对齐,不⾜6位,左侧补0

num = [123.33, 199.0999, 188.77]
print(“第⼀个⼩数是:%f” % num[0]) # ⼩数输出,默认6位
print(“第⼀个⼩数是:%.5f” % num[0]) # 保留5位⼩数,不⾜⼩数点右侧补0
print(“第⼀个⼩数是:%10.5f” % num[0]) # 保留5位⼩数,位数不⾜10位是左侧补空格(包含⼩数点. )
print(“第⼀个⼩数是:%010.5f” % num[0]) # 保留5位⼩数,位数不⾜10位是左侧补0 (包含⼩数点. )

二、 进阶

1. python遍历文件夹

  1. 获取指定路径下所有文件(夹)
os.listdir(derictory)
path = r“D:\test”
sub_dirname_list = os.listdir(path)
for sub_dirname in sub_dirname_list:print(os.path.join(path,sub_dirname))
  1. 遍历指定路径直至路径及其子路径下无可遍历文件夹
os.walk(sys.argv[1])
for file_path,dirs,files in os.walk(path)for file_name in files:if file_name.endswith('xml'):print(file_path, file_name)

2. 解决python读写文件中文乱码问题

字符串在Python内部的表示是unicode 编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码。

decode的作用是将其他编码的字符串转换成unicode编码,如str1.decode(‘gb2312’),表示将gb2312编码的字符串str1转换成unicode编码。

import sys
reload(sys)
sys.setdefaultencoding('utf-8')  #修改默认编码方式,默认为ascci
print sys.getdefaultencoding()
str= ""
print str.decode('utf-8').encode('gb2312')

encode的作用是将unicode编码转换成其他编码的字符串,在处理unicode中文字符串的时候,必须首先对它调用encode函数,转换成其它编码输出。

  1. 读文件
with open(file,"w+",encoding='utf-8') as fw:
fw.read(“中文\n”)
  1. 写文件
with open(file,"w+",encoding='utf-8') as fw:
fw.write(“中文\n”)

3. 打包

pyinstaller -F -w gui_app.spec
pyinstaller -F -w -i logo.ico main.py

-F:表示制作独立得可执行程序
-w:加上,则执行exe时不显示黑色dos窗口,不加则显示
-i:指定exe图标

4. 读ini文件

config.ini内容

[COM]
loop_times = 6
; 循环次数
udisk_id = e
; 比如E盘
version = v431,v435
; 版本号,逗号隔开

python读取config.ini配置文件

import configparser
def read_conf():con = configparser.ConfigParser()cpath = os.path.join(script_path, 'config.ini')con.read(cpath, encoding='utf-8')global loop_times, udisk_id, versionloop_times = con.getint('COM', 'loop_times ')udisk_id = con['COM']['udisk_id']version = con['COM']['version'].split(',')

5. python获取文件路径

链接:https://www.zhihu.com/question/429932517/answer/2359066596
来源:知乎

  1. 获取当前文件路径(工作路径)#获取当前文件路径
    #方法一

    import os
    Path=os.getcwd()
    print(Path)
    

    结果:
    E:\newdocument\文件

    #方法二

    import os
    Path=os.path.abspath(os.path.dirname(__ file__))
    print(Path)
    

    结果:E:\newdocument\文件

  2. 获取上一级文件路径#获取上一级文件路径
    #方法一

    import os
    Path=os.path.dirname(os.getcwd())
    print(Path)
    

    结果:
    E:\newdocument

    #方法二

    Path=os.path.abspath(os.path.join(os.getcwd(),".."))
    print(Path)
    

    结果:E:\newdocument

  3. 获得上上一级文件路径#获取上上一级文件路径

    import os
    Path=os.path.abspath(os.path.join(os.getcwd(),"../.."))
    print(Path)
    

    结果:
    E:\

6. python获取日期时间

  1. 获取当前年月日时分秒
>>> import time
>>> from datetime import datetime
>>> print(time.localtime())
>>> time.struct_time(tm_year=2022, tm_mon=9, tm_mday=1, tm_hour=18, tm_min=8, tm_sec=16, tm_wday=3, tm_yday=244, tm_isdst=0)
>>> print(time.strftime(%Y-%m-%d %H:%M:%S”))
>>> 2022-09-01 18:10:13
>>> print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
>>> 2022-09-01 18:10:13
>>> print(datetime.now())
>>> datetime.datetime(2022, 9, 2, 11, 3, 56, 732052) #年月日时分秒微秒
>>> print(datetime.now().strftime("%Y-%m-%d"))
>>> '2022-09-02'
  1. 获取当天更多信息
import time
t = time.localtime()
print(t)
time.struct_time(tm_year=2022, tm_mon=9, tm_mday=2, tm_hour=9, tm_min=47, tm_sec=20, tm_wday=4, tm_yday=245, tm_isdst=0)
print(t[0:1])  # 获取年
# (2022,)
print(t[0:3])  # 获取年月日,返回元组
# (2022, 9, 20)
print(t.tm_year)
# 2022
解释:
tm_year:年
tm_ mon:月
tm_ mday:日
tm_ hour:时
tm_ min:分
tm_ sec:秒
tm_ wday:周几(4:周五,0:周一)
tm_ yday:当年得第几天(2022年得第245天)
tm_ isdst:夏令时标识符(啥意思我也不知道)
  1. 获取昨天日期
    计算昨天的日期用今天的日期(今天2022年9月2号)减一天的时间差
from datetime import datetime
from datetime import timedelta
one_day = timedelta(days=1)
today = datetime.now()
yestoday = (today-one_day).strftime(“%Y-%m-%d”)
print(yestoday)
# '2022-09-01'
  1. 获取明天日期
    计算明天的日期用今天的日期(今天2022年9月2号)加一天的时间差
from datetime import datetime
from datetime import timedelta
one_day = timedelta(days=1)
today = datetime.now()
yestoday = (today+one_day).strftime(“%Y-%m-%d”)
print(yestoday)
# '2022-09-03'

python编程技巧相关推荐

  1. python编程输入标准-揭秘python编程技巧

    揭秘python编程技巧 一.python的标准输入和输出[root@133 wc]# vim stdin.py #!/usr/bin/python #encoding:utf-8 import sy ...

  2. Blender Python编程技巧

    Blender Python编程技巧 整理自 https://docs.blender.org/ bpy.data object复制 ob = obj.copy() # duplicate linke ...

  3. 提高效率的Python编程技巧

    参考B站UP啥都会一点的研究生 整理了十个100%提高效率的Python编程技巧,更上一层楼 1.遍历列表,且要用到其索引位置进行相应的数据操作 遍历列表,且要用到其索引位置进行相应的数据操作 ''' ...

  4. 分享 10 个超实用的 Python 编程技巧

    作者 | 欣一 来源 | Python爱好者集中营 今天小编来给大家分享几个Python的编程技巧,帮助你迅速完成地从小白到Python大神的蜕变. 字典翻转 首先我们来看字典的翻转,假设我们有下面类 ...

  5. python编程口诀_科学网—Python编程技巧汇总 - 高关胤的博文

    正在学习python编程,把一些小技巧记录下来备查 ======================计算技巧========================== 正常的条件语句如下if a>b:c= ...

  6. Python编程技巧和需要注意的地方——Pro

    目录 前言 1.多个大数字相加 2.同时访问多个相互关联的列表 3.访问列表的同时输出对应下标 4.熟练使用*和_ 5.关于类的get和set方法 6.熟练使用help和dir方法 7.什么时候使用s ...

  7. 总结了90条简单实用的Python编程技巧

    点击上方"菜鸟学Python",选择"星标"公众号 超级无敌干货,第一时间送达!!! 来源:萝卜大杂烩 编码原则 建议1:理解 Pythonic 概念--详见 ...

  8. python 编程提高效率_15 个提高效率的 Python 编程技巧

    作者:George Seif 翻译:马可薇 来源:InfoQ 每次写 Python 都会忘记该怎么写,最后只能去 Stack Overflow 查?我也一样.时间一长,这让人厌倦. 这 15 个 Py ...

  9. 15个优雅的Python编程技巧,掌握后瞬间玩转Python

    学Python朋友们应该都喜欢整洁.一目了然的代码.要写出 Pythonic(优雅的.地道的.整洁的)代码,需要多看多学大牛们写的代码,github 上有很多非常优秀的源代码值得阅读,比如:reque ...

最新文章

  1. 南开校长曹雪涛团队12篇论文被调查“可信性”,此前被举报实验图片有PS痕迹...
  2. html5标签 H5标签
  3. 【BZOJ3866】The Romantic Hero DP
  4. Java对象引用四个级别(强、软、弱、虚)
  5. 痛苦的vsftpd配置
  6. uml的图与代码的转换——类图
  7. 【好文翻译】二十年来我得到的20条编程经验
  8. [原]Jenkins(二十一) jenkins再出发Build periodically和Poll SCM
  9. 微计算机原理及应用大纲,《微型计算机原理及应用》考试大纲
  10. 云南高中信息技术测试软件,(整理)云南省高中信息技术学业水平考试各种操作....
  11. PLM项目目标及阶段
  12. java 编写序列_java如何编写类似oracle自增序列的算法?
  13. 手机内存文件夹html,手机内存难清理?试试直接删掉这3个文件夹,网友:咋不早说?...
  14. 简易的JavaScript文字跟随鼠标移动特效
  15. Android 圆角进度条
  16. 笔记本实现wifi热点
  17. 多人共享的待办事项app有哪些
  18. 图解HTTP学习_day11
  19. 全连接网络和卷积神经网络对比分析
  20. [32期] 想学PHP来兄弟连是正确的选择 初识兄弟连三周

热门文章

  1. 人工智能学习笔记——KL散度
  2. 【已解决】【高速版】如何显示(扫描)局域网中所有的在线主机IP及MAC地址?
  3. Java对接混合支付、退款、提现心得
  4. 简述一下延时函数delay怎么用
  5. ASPX和Razor
  6. ESLint-插件化JS代码检测工具以及VSCode配置
  7. Vue项目搭建常用配置文件!
  8. 面向对象的PHP编程
  9. 解决webstorm调试js时Evaluate脚本获取dom属性丢失问题
  10. vue组件间通信传递数据的四种方式(路由传参、父子组件传参、兄弟组件传参、深层次传参)