常 用 代 码

欢迎访问我的博客首页


1. 文件命名


  有 n 个文件需要以十进制命名:从 0 开始且 n ≥ 2 n \geq 2 n2 时,补 0 需指定名称长度为 n1 = math.ceil(math.log(n, 10));从 1 开始且 n ≥ 1 n \geq 1 n1 时,补 0 需指定名称长度为 n2 = math.ceil(math.log(n + 1, 10))。注意函数 ceil 返回的是浮点数。

  使用 time 可以获取精确到秒的时间戳,使用 datetime 可以获取精确到微秒( 1 0 − 6 10^{-6} 106 秒)的时间戳。

name = time.strftime('%Y%m%d_%H%M%S', time.localtime())
name = datetime.datetime.now().strftime('%Y%m%d_%H%M%S_%f')

2. 读取和修改 xml 文件


import os
import xml.etree.ElementTree as ET


def read_xml(item, key):
    xml_path = os.path.abspath(os.path.join(os.path.dirname(__file__), 'globalCfg.xml'))
    try:
        root = ET.parse(xml_path).getroot()
        text = root.findall(item)[0].find(key).text
    except Exception:
        raise RuntimeError('Failed to find label in xml!')
    text = text.strip()
    # 1.列表或字典
    if text[0] == '[' or text[0] == '{':
        return eval(text)
    # 2.数字和字符串
    try:
        text = int(text)
    except Exception:
        pass
    return text


def write_xml(item, key, value):
    xml_path = os.path.abspath(os.path.join(os.path.dirname(__file__), 'globalCfg.xml'))
    try:
        tree = ET.parse(xml_path)
        root = tree.getroot()
        root.findall(item)[0].find(key).text = str(value)
        tree.write(xml_path, encoding='utf-8', xml_declaration=True)
        return 0
    except Exception as ex:
        print(ex)
        return 1


if __name__ == '__main__':
    res = read_xml('person2', 'age')
    print(res)
    red = write_xml('person1', 'age', 21)
    print(red)

  这两个函数用于读取和修改 xml 文件中的值,不能创建 xml 文件,也不能在已存在的 xml 文件内添加新标签。读取和修改的 xml 文件必须是下面的形式:

<example>
    <person1>
        <name>xiaoming</name>
        <sex>male</sex>
        <age>21</age>
    </person1>
    <person2>
        <name>xiaofang</name>
        <sex>female</sex>
        <age>19</age>
    </person2>
</example>

3. 时间间隔


  统计一段时间有多长,精确到微秒。

import time
import datetime

if __name__ == '__main__':
    time_start = datetime.datetime.now()
    time.sleep(3.21)
    time_end = datetime.datetime.now()
    # 统计时间间隔。
    time_delay = time_end - time_start
    print(time_delay)  # 时:分:浮点秒
    print(time_delay.total_seconds())  # 浮点秒
    print(time_delay.seconds)  # 秒的整数部分
    print(time_delay.microseconds)  # 秒的小数部分

4. 搜索文件


  os.listdir(path) 用于获取一个文件夹中的文件夹名或文件名。需要注意的是,它不能递归搜索,且获取的是文件名而不是文件路径。下面的函数可以递归地获取指定类型的文件路径:

def list_dir(path: str, ext: list = None) -> list:
    candidates = os.listdir(path)
    results = list()
    if ext:
        # 搜索指定类型的文件。
        ext = [i.lower() for i in ext]
        for fi in candidates:
            if os.path.splitext(fi)[1].lower() in ext:
                results.append(os.path.join(path, fi))
    else:
        # 搜索文件夹。
        for directory in candidates:
            path_one = os.path.join(path, directory)
            if os.path.isdir(path_one):
                results.append(path_one)
    return results

def walk_dir(path: str, ext: list = None) -> list:
    results = list()
    if ext:
        # 搜索指定类型的文件。
        ext = [i.lower() for i in ext]
        for r, _, fs in os.walk(path):
            for fi in fs:
                if os.path.splitext(fi)[1].lower() in ext:
                    path_file = os.path.join(r, fi)
                    results.append(path_file)
    else:
        # 搜索文件夹。
        for r, ds, _ in os.walk(path):
            for di in ds:
                path_one = os.path.join(r, di)
                if os.path.isdir(path_one):
                    results.append(path_one)
    return results

5. 参考


  1. os.walk 详解,CSDN,2022。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值