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

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

Windows:

python 复制代码
yaml_url = os.path.join(path, 'xx_ui_auto\\devices.yaml')

Mac:

python 复制代码
yaml_url = os.path.join(path, 'xx_ui_auto/devices.yaml')

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

python 复制代码
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}")

或者

python 复制代码
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,并统一使用正斜杠 /(兼容性更好)。

python 复制代码
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

相关推荐
Dingdangcat861 分钟前
基于RetinaNet的建筑表面缺陷检测与识别系统研究_2
python
袖清暮雨9 分钟前
Python爬虫(Scrapy框架)
开发语言·爬虫·python·scrapy
modelmd11 分钟前
【递归算法】汉诺塔
python·算法
2501_9416527712 分钟前
基于YOLO12-A2C2f-FRFN的电缆连接器类型识别与定位
python
喵手12 分钟前
Python爬虫实战:采集双色球(SSQ)历史开奖数据(期号、红球、蓝球、开奖日期)等信息,并进行结构化CSV存储(Requests + Pandas)!
爬虫·python·爬虫实战·零基础python爬虫教学·双色球历史开奖数据·期号红球篮球开奖日期等·结构化csv存储
氵文大师29 分钟前
PyTorch 性能分析实战:像手术刀一样精准控制 Nsys Timeline(附自定义颜色教程)
人工智能·pytorch·python
梦幻精灵_cq32 分钟前
正文标题党——正文标题也需要精致
python
FreeBuf_34 分钟前
AutoPentestX:面向 Linux 系统的自动化渗透测试工具包
linux·运维·自动化
YMWM_40 分钟前
python3中类的__call__()方法介绍
开发语言·python
老百姓懂点AI44 分钟前
[数据工程] 告别脏数据:智能体来了(西南总部)AI调度官的自动化ETL清洗与AI agent指挥官的数据合成管线
人工智能·自动化·etl