当前位置: 首页 > backend >正文

(9)python开发经验

文章目录

      • 1 os.path.join()拼接路径
      • 2 条件变量
      • 3 添加临时环境变量


更多精彩内容
👉内容导航 👈
👉Qt开发 👈
👉python开发 👈

1 os.path.join()拼接路径

os.path.join() 是 Python 中处理文件路径拼接的核心函数,能自动适配不同操作系统的路径分隔符(如 Windows 的 \ 和 Linux/macOS 的 /)。以下是详细说明:


基本用法

import ospath = os.path.join('dir1', 'dir2', 'file.txt')
# 输出结果(以 Linux 为例): 'dir1/dir2/file.txt'
# Windows 输出: 'dir1\\dir2\\file.txt'

核心规则

  1. 绝对路径会重置拼接

    • 如果某个参数是绝对路径(以 / 或盘符开头),则之前的路径会被丢弃
    os.path.join('dir1', '/dir2', 'file.txt')  # 结果: '/dir2/file.txt'
    os.path.join('C:\\Users', 'D:\\data', 'file.txt')  # 结果: 'D:\\data\\file.txt'(Windows)
    
  2. 空字符串处理

    • 空字符串参数会被忽略,但可能影响盘符(Windows):
    os.path.join('', 'dir1', '', 'file.txt')  # 结果: 'dir1/file.txt'
    os.path.join('C:', '', 'file.txt')        # 结果: 'C:file.txt'(Windows 下需注意!)
    
  3. 自动处理分隔符

    • 若参数末尾已有分隔符,不会重复添加:
    os.path.join('dir1/', 'dir2')  # 结果: 'dir1/dir2'
    

注意事项

  1. 不要手动拼接路径

    • ❌ 避免 path = 'dir1' + '/' + 'file.txt',因为跨平台兼容性差。
    • ✅ 始终使用 os.path.join()
  2. 处理空路径的风险

    • 空字符串可能导致意外结果:
    os.path.join('dir1', '', 'file.txt')  # 结果: 'dir1/file.txt'
    
  3. 特殊字符与非法字符

    • 如果路径包含非法字符(如 *?),函数不会报错,但后续文件操作可能失败:
    os.path.join('dir*', 'file?.txt')  # 合法拼接,但无法实际创建文件
    
  4. 跨平台行为差异

    • Windows 中处理盘符时需谨慎:
    os.path.join('C:/dir1', 'D:/dir2')  # 结果: 'D:/dir2'(丢弃前半部分)
    

最佳实践

  • 组合多个路径片段时

    base_dir = 'project'
    sub_dir = 'data'
    file_name = 'config.json'
    full_path = os.path.join(base_dir, sub_dir, file_name)
    
  • 处理用户输入路径时

    user_input = '/user/custom_path'  # 可能包含绝对路径
    safe_path = os.path.join('default_dir', user_input.lstrip('/'))
    

常见问题

Q:为什么拼接绝对路径时前面的路径被丢弃?
A:这是设计逻辑——绝对路径表示“根目录开始”,因此会覆盖之前的相对路径。

Q:如何确保路径末尾有斜杠?
A:显式添加:

dir_path = os.path.join('dir1', 'dir2') + os.sep  # 结果: 'dir1/dir2/'

2 条件变量

注意事项:

  1. 必须持有锁
    • 调用 wait()notify()notify_all() 前必须通过 acquire()with 语句获取锁。
import threadingcond = threading.Condition()# 等待
with cond:cond.wait()  # 等待# 唤醒
with cond:cond.notify()  # 等待

3 添加临时环境变量

在代码中添加临时环境变量,便于访问指定路径下的内容;

def __set_environ(self):"""设置环境变量,将adb目录添加到PATH环境变量:return:"""# 获取当前的PATH环境变量current_path = os.environ['PATH']# 新增路径到PATH环境变量adb_dir = get_adb_dir()if not os.path.exists(adb_dir):logger.error(f"adb目录 {adb_dir} 不存在")returnos.environ['PATH'] = current_path + os.pathsep + str(adb_dir)


http://www.xdnf.cn/news/6820.html

相关文章:

  • NDS3211HV单路H.264/HEVC/HD视频编码器
  • math toolkit for real-time development读书笔记一三角函数快速计算(1)
  • Guided Filtering相关记录
  • 牛客网NC22222:超半的数
  • 登高架设作业人员的职业发展方向有哪些?
  • Lazada测评补单系统搭建指南:从环境到账号的要点把控
  • 深入解析Shell脚本编程:从基础到实战的全面指南
  • L52.【LeetCode题解】二分法习题集1
  • BigemapPro小技巧:如何只显示特定区域内的点
  • Linux 内核版本详解
  • 数据中心末端配电监控产品
  • STM32F407VET6实战:CRC校验
  • Python-homework
  • 1Panel应用推荐:Beszel轻量级服务器监控平台
  • UE RPG游戏开发练手 第二十七课 普通攻击2
  • 使用Mathematica制作Lorenz吸引子的轨道追踪视频
  • 海盗王3.0的数据库3合1并库处理方案
  • 【全解析】EN18031标准下的SUM安全更新机制
  • VBA技术资料MF306:删除与正则表达式匹配的文件
  • 10 大医学数据集汇总:覆盖问答/推理/真实临床记录/超声图像/CT 影像……
  • 多网卡管理实战指南:原理、问题分析与实用工具推荐
  • vs2019及以后版本cmd指定编译环境文件的路径
  • Linux》Ubuntu》安装Harbor 私有仓库
  • Manim教程:第12章 函数,函数图像和文字的渲染
  • 高清箱号识别系统:模糊集装箱号的高效识别解决方案
  • ”一维前缀和“算法原理及模板
  • 多线程八股文(自用)
  • SOLIDWORKS Simulation接触定义精讲(一)
  • CVE-2017-8046 漏洞深度分析
  • 【每天一个知识点】意图传播(Intent Propagation)