博客
关于我
python 基础操作知识整理总结
阅读量:796 次
发布时间:2023-03-07

本文共 4234 字,大约阅读时间需要 14 分钟。

数据对象持久化

在程序运行过程中,我们有时需要将数据对象的内容保存下来,以便下次程序启动时读取。这种操作称为对象持久化。以下是使用 pickle 库进行数据持久化的示例:

import pickle# 创建测试字典before_d = {}before_d[1] = "Name 1"before_d[2] = "Name 2"before_d[3] = "Name 3"# 将字典持久化到文件with open("dict1.dat", "w") as fout:    pickle.dump(before_d, fout, protocol=0)fout.close()# 恢复字典with open("dict1.dat", "r") as fin:    after_d = pickle.load(fin)fin.close()# 输出结果print(before_d)  # {1: 'Name 1', 2: 'Name 2', 3: 'Name 3'}print(after_d)  # {1: 'Name 1', 2: 'Name 2', 3: 'Name 3'}

正则表达式替换

目标是将字符串 line 中的 overview.gif 替换为其他字符串。以下是实现方法:

import reline = ''# 创建匹配 SRC="..." 的正则表达式mo = re.compile(r'(?<=SRC=)"([\w+\.]+)"', re.I)# 替换匹配到的内容new_line = mo.sub(r'"\1****"', line)print(new_line)  # # 替换为自定义字符串new_line = mo.sub(r'replace_str_\1', line)print(new_line)  # # 可根据需要替换其他内容new_line = mo.sub(r'testetstset', line)print(new_line)  # 

目录遍历

有时我们需要遍历特定目录中的文件,可以使用 os.walk 方法:

import osfileList = []rootdir = "/tmp"for root, subFolders, files in os.walk(rootdir):    if '.svn' in subFolders:        subFolders.remove('.svn')        for file in files:        if ".t2t" not in file:            file_dir_path = os.path.join(root, file)            fileList.append(file_dir_path)print(fileList)

列表按列排序

如果列表中的每个元素都是元组,可以根据指定列排序。以下示例根据元组的第 2 和第 3 列数据进行排序:

a = [    ('2011-03-17', '2.26', 6429600, '0.0'),    ('2011-03-16', '2.26', 12036900, '-3.0'),    ('2011-03-15', '2.33', 15615500, '-19.1')]# 按第 2 列排序并倒序b = sorted(a, key=lambda x: x[1], reverse=True)print(b)# 按第 3 列排序并倒序c = sorted(a, key=lambda x: x[2], reverse=True)print(c)

列表去重

有时需要删除列表中的重复元素,可以使用 set 函数:

lst = [(1, 'sss'), (2, 'fsdf'), (1, 'sss'), (3, 'fd')]unique_lst = set(lst)print(unique_lst)  # {1: 'sss', 2: 'fsdf', 3: 'fd'}# 去重后的列表unique_lst = list(set(lst))print(unique_lst)  # [1, 'sss', 2, 'fsdf', 3, 'fd']

字典排序

通常我们根据字典的 key 进行排序,但若需要根据 value 排序,可以使用 itemgetter 函数:

from operator import itemgetteraa = {    'a': '1',    'sss': '2',    'ffdf': '5',    'ffff2': '3'}# 按 value 进行排序sort_aa = sorted(aa.items(), key=itemgetter(1))print(sort_aa)  # [('a', '1'), ('sss', '2'), ('ffff2', '3'), ('ffdf', '5')]

字典、列表、字符串互转

以下是将数据库连接字符串从字典转换为字符串的示例:

params = {    'server': 'mpilgrim',    'database': 'master',    'uid': 'sa',    'pwd': 'secret'}# 转换为查询字符串query_params = ";".join(["%s=%s" % (k, v) for k, v in params.items()])print(query_params)  # "server=mpilgrim;uid=sa;database=master;pwd=secret"# 将字符串转回字典a = "server=mpilgrim;uid=sa;database=master;pwd=secret"aa = {}for i in a.split(';'):    key, value = i.split('=', 1)    aa[key] = valueprint(aa)  # {'server': 'mpilgrim', 'uid': 'sa', 'database': 'master', 'pwd': 'secret'}

时间对象操作

将时间对象转换为字符串:

import datetimedatetime.datetime.now().strftime("%Y-%m-%d %H:%M")# 输出: '2011-01-20 14:05'# 时间大小比较import timet1 = time.strptime('2011-01-20 14:05', "%Y-%m-%d %H:%M")t2 = time.strptime('2011-01-20 16:05', "%Y-%m-%d %H:%M")print(t1 > t2)  # Falseprint(t1 < t2)  # True# 计算8小时前的时间time_now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M")print(time_now)  # '2011-01-20 14:05'eight_hours_ago = (datetime.datetime.now() - datetime.timedelta(hours=8)).strftime("%Y-%m-%d %H:%M")print(eight_hours_ago)  # '2011-01-20 07:03'# 将字符串转换为时间对象endtime = datetime.datetime.strptime('20100701', "%Y%m%d")print(type(endtime))  # 
print(endtime) # '2010-07-01 00:00:00'

命令行参数解析

在编写日运维脚本时,常用 getopt 模块解析命令行参数。以下是一个示例:

#!/usr/bin/env python# coding: utf-8import sys, os, getoptdef usage():    print('''Usage: analyse_stock.py [options...]''')print("Options:")try:    opts, args = getopt.getopt(sys.argv[1:], 'he:c:f:d:n:s:')except getopt.GetoptError:    usage()    sys.exit()if not opts:    usage()    sys.exit()for opt, arg in opts:    if opt in ('-h', '--help'):        usage()        sys.exit()elif opt == '-d':    print(f"del stock {arg}")elif opt == '-f':    print(f"read file {arg}")elif opt == '-c':    print(f"user-defined {arg}")elif opt == '-e':    print(f"Exchange Name {arg}")elif opt == '-s':    print(f"Stock code {arg}")elif opt == '-n':    print(f"Stock name {arg}")sys.exit()

格式化输出

10.1 格化输出字符串

截取字符串输出:

str = "abcdefg"print("%.3s" % str)  # abc

按固定宽度输出:

str = "abcdefg"print("%10s" % str)  # abcdefg

10.2 进制转换

转换为不同进制:

num = 10print("Hex = %x, Dec = %d, Oct = %o" % (num, num, num))  # Hex = a, Dec = 10, Oct = 12

转载地址:http://unofk.baihongyu.com/

你可能感兴趣的文章
Python rsa 加密
查看>>
Python RSA操作
查看>>
Python轻松实现统计学中重要的相关性分析
查看>>
Python scrapy 常见问题及解决 【遇到的坑】
查看>>
Python Seborn热图数据的动态更新
查看>>
Python Seborn绘制空白直方图
查看>>
Python Selenium - 获取href值
查看>>
Python Selenium实现自动化测试及Chrome驱动使用!
查看>>
Python Selenium搭建UI自动化测试框架
查看>>
Python Selenium模块详解
查看>>
Python selenium爬取影评生成词云图
查看>>
python selenium自动化测试报告
查看>>
Python selenium自动化测试框架实战 —— 登录测试案例
查看>>
Python Selenium设计模式 —— POM
查看>>
Python Serial:如何使用 read 或 readline 函数一次读取多个字符
查看>>
Python set([]) 如何检查两个对象是否相等?一个对象需要定义哪些方法来自定义它?
查看>>
Python setup.py:数据文件无法复制目录:不存在或不是常规文件
查看>>
Python setuptools sdist:仅安装版本化文件
查看>>
Python Shell下使用matplotlib
查看>>
Python Slice How-to,我知道Python Slice,但我怎么才能使用内置的Slice对象呢?
查看>>