Python:如何获取兄弟目录中文件的路径?

8 投票
4 回答
9953 浏览
提问于 2025-04-16 04:24

我有这样的文件结构:

data
   mydata.xls
scripts
   myscript.py

在我的脚本myscript.py里面,我怎么才能获取到mydata.xls的文件路径呢?

我需要把这个路径传给xlrd:

book = xlrd.open_workbook(filename)

但是像'../data/mydata.xls'这样的相对路径好像不太管用。

4 个回答

4
import os
directory = os.path.dirname(os.getcwd())
final = os.path.join(directory, 'data', 'mydata.xls')
os.path.abspath('../data/mydata.xls')

或者简单来说

12

如果你想让它不依赖于你当前的目录,可以试试下面的代码:

os.path.join(os.path.dirname(__file__), '../data/mydata.xls')

这里有个特别的变量叫做 __file__,它包含了当前脚本的相对路径。需要注意的是,当你在REPL解释器中使用时,__file__ 是没有定义的。

11

你可以使用 os.path.abspath(<relpath>) 来把一个相对路径转换成绝对路径。

vinko@parrot:~/p/f$ more a.py
import os
print os.path.abspath('../g/a')

vinko@parrot:~/p/f$ python a.py
/home/vinko/p/g/a

目录结构:

vinko@parrot:~/p$ tree
.
|-- f
|   `-- a.py
`-- g
    `-- a

2 directories, 2 files

撰写回答