同事的Python脚本在Windows写好,拷到服务器一跑就报路径找不到,日志里路径全是反斜杠。问题出在他把目录分隔符写死了,没考虑跨平台。directory_separator就是各语言里表示目录分隔符的那个常量或概念。
两个平台的默认值
Windows默认用反斜杠分隔目录,比如C盘后面跟Windows再跟System32。Linux和macOS用正斜杠。麻烦的是反斜杠在编程语言里通常还是转义符,字符串里写一个反斜杠要写两个,很容易漏。所以现在Windows也大量接受正斜杠。
各语言里的写法
- Python:os.sep就是当前系统的分隔符,os.path.join自动拼路径。
- Java:File.separator返回平台分隔符,Paths.get能自动处理。
- Node:path.sep是分隔符,path.join按平台拼。
- C:Windows下有宏定义,Linux下直接写正斜杠。
最稳的写法
别手拼字符串,用各语言的路径库。Python用pathlib的Path,Node用path模块,Java用Path。读配置里的路径时统一转成绝对路径再比较,因为同一个目录可以写成带盘符、带上级符号等多种形式。做跨平台工具时,输入统一按正斜杠解析,输出再按目标系统转换。
常见的坑
路径拼接时自己加斜杠容易多一个或少一个,用join就能避免。网络共享路径以两个反斜杠开头,拼接时要单独处理。正则里匹配路径要转义分隔符。URL里永远是正斜杠,别把本地路径直接拼进URL。