Github Action Windows环境正确文件路径格式及文件读取报错解决
问题根因
这个报错和路径用双反斜杠还是正斜杠没有任何关系,核心是Github Action Windows环境的Selenium配置、目录权限和你本地环境不一致,你拿到的C:\202204_10エリア計.csv从根上就是个不存在的无效路径:
- 你本地Windows大概率手动改过浏览器默认下载路径到C盘根目录,且本地账号有C盘根目录读写权限,所以代码能跑通
- Github Action官方Windows运行器用的是普通权限的
runneradmin账号,默认没有C盘根目录的写入权限,Selenium拉起的Chrome/Edge默认下载路径是C:\Users\runneradmin\Downloads\,文件根本不会落到C盘根目录。你之前的文件定位逻辑要么是硬编码了C盘路径,要么是错误读取了浏览器的缓存配置路径,不是文件实际的落盘位置,所以不管怎么改斜杠格式都找不到文件。
可直接复用的解决步骤
- 启动Selenium时显式指定统一的下载目录,不要依赖环境默认配置,从根源避免路径不一致。以Chrome驱动为例,配置代码如下:
from selenium.webdriver.chrome.options import Options import os # 直接指定下载到当前工作目录,本地和CI环境都能无权限访问 download_path = os.getcwd() chrome_options = Options() prefs = { "download.default_directory": download_path, "download.prompt_for_download": False, "download.directory_upgrade": True, "safebrowsing.enabled": False } chrome_options.add_experimental_option("prefs", prefs) # 后续用这个chrome_options初始化webdriver即可
- 修正文件定位逻辑,不要硬编码盘符,用
os.path模块自动适配不同环境的路径格式,不需要手动替换斜杠:
import os import pandas as pd download_path = os.getcwd() all_files = os.listdir(download_path) # 匹配带目标日期、后缀为csv的文件 target_name = [f for f in all_files if str(next_date) in f and f.endswith(".csv")][0] # 自动拼接为当前系统认可的合法绝对路径 full_file_path = os.path.join(download_path, target_name) # 直接读取即可,不需要额外处理斜杠 df = pd.read_csv(full_file_path)
- 如果还是匹配失败,在定位文件前加一行日志打印当前目录下的所有文件,从CI运行日志里就能直接看到实际文件名,排查是不是日文文件名编码导致的匹配偏差:
print("当前下载目录文件列表:", all_files)
补充说明:Python在Windows环境下会自动识别路径中的正斜杠、双反斜杠格式,只要路径真实存在、账号有访问权限,
pandas读取就不会报路径不存在的错误,不需要刻意替换斜杠。另外不要在Github Action的Windows环境里尝试往C盘根目录写入文件,默认权限规则会直接拦截写入操作。
内容的提问来源于stack exchange,提问作者KowComical
相关产品推荐
相关产品推荐

