我有这样的文件结构:
data
mydata.xls
scripts
myscript.py
从myscript.py中,如何获取mydata.xls的文件路径?
我需要将它传递给xlrd:
book = xlrd.open_workbook(filename)
和'../data/mydata.xls'之类的相对文件路径似乎不起作用。
答案 0 :(得分:6)
您可以使用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
答案 1 :(得分:4)
如果您想使其独立于当前目录,请尝试
os.path.join(os.path.dirname(__file__), '../data/mydata.xls')
特殊变量__file__
包含使用它的脚本的相对路径。请记住,使用REPL解释器时__file__
未定义。
答案 2 :(得分:2)
import os
directory = os.path.dirname(os.getcwd())
final = os.path.join(directory, 'data', 'mydata.xls')
或只是
os.path.abspath('../data/mydata.xls')
答案 3 :(得分:-1)
从你的评论中,似乎book = xlrd.open_workbook(filename)
不喜欢相对路径。您可以创建相对于当前文件__file__
的路径,然后获取将删除相对部分的绝对路径(..
)
import os
filename = os.path.join(os.path.dirname(__file__), '../data/mydata.xls')
book = xlrd.open_workbook(os.path.abspath(filename))