python获取当前路径及父结节,祖先节点遇到的坑

本文讨论了Python中切换路径操作时遇到的问题,特别是在不同调用环境下读取文件路径的不同。作者通过实验发现,使用`os.path.dirname(__file__)`可以获取文件的物理路径,并以此为基础获取父目录和祖先目录,从而确保正确读取data.txt文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python经常会遇到切换路径的操作。例如文件结构如下

在写程序时遇到test.test_data.py里调用utils.data_process.data.py的open_file()读取data.txt的目录,跟直接在utils.data_process.data.py运行调用open_file()读取data.txt的目录,运行结果是不同的。个人猜想:test调用时是以test所在目录作为当前目录的,直接运行时是取的data_process目录作为当前目录的。所以为了避免这种情况发生,选对读取路径的函数非常关键,通过实验发现,在data.py文件用os.path.dirname(__file__)读取的文件所在路径,无论怎么调用都是%项目所在物理路径%testpath/utils/data_process,这样再想办法根据需求取父节点,和祖先节点就可以了。

data.txt

[store]
shopid = '20180828'
shopname = 'sunny'
address = 'shanghai'

data.py

#!coding:utf-8
import ConfigParser
import os
def open_file():
    cp = ConfigParser.ConfigParser()
    # 获取data.py的目录
    # data_directory = os.path.dirname(__file__)
    data_directory = os.path.abspath(os.path.d
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值