使用Python os.path.pardir拼接路径触发FileNotFoundError如何解决?
问题定位和修复方案
- 路径报错核心原因:你触发的
FileNotFoundError是执行Jupyter的%%writefile魔法命令时,目标路径参数$get_raw_data_script_file的拼接结果不符合预期导致的,和后续业务逻辑的路径拼接无关。- 你可以先在当前Notebook单元格单独执行
print(get_raw_data_script_file),对比输出结果和你手动写的原始字符串路径的差异,就能直接定位拼接错误点:大概率是拼接时多了多余的路径分隔符、漏了目录层级,或是拼接时使用了相对路径但当前工作目录和你预期的不一致。
- 你可以先在当前Notebook单元格单独执行
- 现有代码的语法错误修复:
- 字典语法错误:
payload中'action': 'login'末尾缺少英文逗号,需要补充为'action': 'login', - 特殊变量格式错误:代码中所有的
_name_需要修改为双下划线格式的__name__,否则程序入口判断逻辑不会生效 - 作用域缩进错误:
raw_data_path、data_path变量定义、extract_data调用、logger.info('downloaded raw data')这几行当前缩进层级错误,不在main函数作用域内,需要统一缩进4格归入main函数 - 方法名拼写错误:
logging.getlogger需要修改为驼峰格式logging.getLogger - 赋值符号错误:
logging.basicConfig配置中的level-logging.INFO需要将减号修改为等号level=logging.INFO
- 字典语法错误:
- 自动获取根目录的逻辑优化:如果你需要恢复注释掉的
os.path.join(os.path.dirname(__file__),os.pardir,os.pardir)自动获取根目录的逻辑,需要确保当前脚本的存放路径是项目根目录/src/data/,向上跳两级才能正确定位到根目录,可以在拼接后增加print(os.path.abspath(project_dir))打印绝对路径验证结果是否正确。
内容的提问来源于stack exchange,提问作者Soffie
相关产品推荐
相关产品推荐

