python 文件路径获取 pycharm

└── folder
    ├── data
    │   └── data.txt
    └── test
    │   └── test.py
    └── page1
        └── page2 
            └── test2.py
   
        

请教下如何相对便利的获取非py文件的路径。

test是我当前运行的脚本,希望在运行过程中open() data.txt.

目前的做法
1.是指os,获得当前路径然后逐层反推。比较麻烦
2.是"../data/data/txt",只是如果还有个其他位置的py文件调用,比如test2中调用了test1,这种路径就又抽了。

请问下有没别的更实用的方式确定文件路径,如果能类似导入一个py文件一样直接from data import data.txt 然后用这个东西就好了。

阅读 7.4k
1 个回答

一、解决办法

如果data.txt文件需要在多个.py文件使用,那么最好的方式是将data.txt文件的路径 定义为一个变量。

可以在项目的根目录下定义有一个config.py 或者constants.py文件,那么可以在其中定义变量:

config.py 文件内容

import os

PROJECT_ROOT = os.path.dirname(os.path.realpath(__file__))  # 获取项目根目录

data_file_path = os.path.join(PROJECT_ROOT, "folder/data/data.txt")  # 文件路径

然后在任意需要读取data.txt文件的.py文件中引用上面config.py文件中定义的文件路径变量

import os

from config import data_file_path

with open(data_file_path, 'r') as f:
    for line in f:
        print(line.strip())

二、测试目录结构

├── config.py
└── folder
    ├── data
    │   └── data.txt
    ├── page1
    │   ├── page2
    │   │   └── test2.py
    │   └── page3
    │       └── page4
    │           └── page5
    │               └── test3.py
    └── test
        └── test.py

test.py test2.py test3.py 文件运行上述读取文件代码,都能正常运行(Pycharm中)

三、建议

  1. 如果一个数据文件在一个项目的很多文件(不同目录,和子目录)被用到,那说明项目布局不是最佳(做数据科学临时脚本任务除外),建议先从代码布局,设计,抽象着手优化项目;
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题