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

跨平台实践:python中如何检查当前操作系统

之前写的Android UI 自动化脚本及专项测试代码是在Windows上开发的,现在换mac了,有些地方需要根据不同系统环境进行兼容适配了,例如,

Windows:

yaml_url = os.path.join(path, 'xx_ui_auto\\devices.yaml')

Mac:

yaml_url = os.path.join(path, 'xx_ui_auto/devices.yaml')

在 python 中,可以使用内置的 os 模块的 os.name 或 platform.system() 来判断当前操作系统。以下是实现方法:

import os
import platform

# 基础路径
path = "/Users/testmanzhang"

# 判断系统类型
if os.name == 'nt':  # Windows 系统
    yaml_url = os.path.join(path, 'xx_ui_auto\\devices.yaml')
elif os.name == 'posix':  # macOS 或 Linux 系统
    yaml_url = os.path.join(path, 'xx_ui_auto/devices.yaml')
else:
    raise RuntimeError("Unsupported operating system")

print(f"File path is: {yaml_url}")

或者

import os
import platform

# 基础路径
path = "/Users/testmanzhang"

# 根据平台判断路径
system_name = platform.system()
if system_name == "Windows":
    yaml_url = os.path.join(path, 'xx_ui_auto\\devices.yaml')
elif system_name == "Darwin":  # macOS
    yaml_url = os.path.join(path, 'xx_ui_auto/devices.yaml')
elif system_name == "Linux":
    yaml_url = os.path.join(path, 'xx_ui_auto/devices.yaml')  # 假设 Linux 和 macOS 目录相同
else:
    raise RuntimeError("Unsupported operating system")

print(f"File path is: {yaml_url}")

为避免手动处理路径分隔符,推荐使用 os.path.join 或 pathlib,并统一使用正斜杠 /(兼容性更好)。

from pathlib import Path
import platform

# 基础路径
path = Path("/Users/testmanzhang")

# 动态判断路径
system_name = platform.system()
if system_name == "Windows":
    yaml_url = path / "xx_ui_auto" / "devices.yaml"
elif system_name in ["Darwin", "Linux"]:  # macOS 或 Linux
    yaml_url = path / "xx_ui_auto" / "devices.yaml"
else:
    raise RuntimeError("Unsupported operating system")

print(f"File path is: {yaml_url}")

【总结】

os.name:
'nt': Windows
'posix': macOS 和 Linux

platform.system():
'Windows': Windows
'Darwin': macOS
'Linux': Linux


http://www.kler.cn/a/505669.html

相关文章:

  • 新垂直电商的社交传播策略与AI智能名片2+1链动模式S2B2C商城小程序的应用探索
  • 【AI】【RAG】使用WebUI部署RAG:数据优化与设置技巧详解
  • C语言:数据的存储
  • SpringBoot入门实现简单增删改查
  • django在线考试系统
  • 汽车免拆诊断案例 | 2007 款法拉利 599 GTB 车发动机故障灯异常点亮
  • 使用JMeter模拟多IP发送请求!
  • Jenkins-简介/安装!
  • Lesson 109 A good idea
  • 【全套】基于Springboot的房屋租赁网站的设计与实现
  • Trie树算法
  • 1月13日学习
  • 安全开发 javaEE应用 servlet 路由技术 生命周期 JDBC数据库操作
  • Centos9-SSH免密登录配置-修改22端口-关闭密码登录-提高安全性
  • 服务端渲染(SSR)与客户端渲染(CSR)详解
  • 8.User-Agnet代理池
  • 链家房价数据爬虫和机器学习数据可视化预测
  • 解决 Git SSL 连接错误:OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno
  • 【嵌入式——Linux】Ubuntu网络环境配置
  • 【大厂面试AI算法题中的知识点】方向涉及:ML/DL/CV/NLP/大数据...本篇介绍自动驾驶检测模型如何针对corner case 优化?
  • 个人主页搭建全流程(Nginx部署+SSL配置+DCDN加速)
  • 《鸿蒙开发-鸿蒙教程-答案之书》组件margin左和右等于没偏?
  • LeetCode第432场周赛 (前3题|多语言)
  • 如何使用插件(刷课,游戏等)
  • Sonatype Nexus OSS 构建私有docker 仓库
  • 拆分工作簿转换PDF格式文件一步到位-Excel易用宝