Win10下Ubuntu环境运行Python如何将文件保存到Windows系统文件夹
问题根因
- WSL下的Ubuntu为Linux运行环境,不识别Windows的盘符格式
C:\,也不使用反斜杠\作为路径分隔符。你输入的路径中的反斜杠会被Linux识别为转义字符,最终整个路径字符串会被当成普通文件名处理,因此会在脚本同级目录生成命名异常的文件。 - WSL默认会将Windows所有磁盘挂载到
/mnt/目录下,C盘对应路径为/mnt/c,D盘对应/mnt/d,以此类推,Linux环境统一使用正斜杠/作为路径分隔符。
修复方案
直接转换路径(仅WSL环境运行)
将Windows路径转换为WSL可识别的挂载路径即可,示例代码如下:
# 原Windows路径 C:\Users\XXXX\Downloads\my_file.csv 转换后如下 df.to_csv("/mnt/c/Users/XXXX/Downloads/my_file.csv")
注意事项:
- 盘符字母必须小写,比如C盘对应路径中的
c,不可使用大写C - 所有路径分隔符替换为正斜杠
/,无需添加转义符
多环境兼容方案(同时支持Windows原生、WSL环境运行)
可添加环境判断逻辑自动适配路径,无需手动修改路径格式:
import os import sys def convert_win_path_to_wsl(win_path): # 判断是否为WSL环境 if sys.platform == "linux" and "microsoft" in os.uname().release.lower(): win_path = win_path.replace("\\", "/") drive, path_suffix = win_path.split(":/", 1) return f"/mnt/{drive.lower()}/{path_suffix}" # 非WSL环境直接返回原路径 return win_path # 调用示例 target_path = convert_win_path_to_wsl("C:\\Users\\XXXX\\Downloads\\my_file.csv") df.to_csv(target_path)
内容的提问来源于stack exchange,提问作者smallbirds
相关产品推荐
相关产品推荐

