在python 3中使用相对路径打开文件的问题

时间:2014-08-10 18:50:38

标签: python

我为py 3编写了一个包,但有一些问题:

Package
       __init__.py
       File.txt
       Run.py
               def run():
                      open ("File.txt")

现在我在控制台中导入Run.py,但是当我使用Run.run()时 它说没有名为File.txt的文件。 请帮忙!

1 个答案:

答案 0 :(得分:2)

导入模块/包时,它不会更改您所在的工作目录。您可以使用import os进行检查,然后在导入之前和之后检查os.getcwd()。因此,open("File.txt")在当前工作目录中查找文件,该文件通常是您在启动python之前在shell上的目录。例如:

/a/b/c $ python
>>> import os
>>> os.getcwd()
"/a/b/c"
>>> from Package import Run # import run.py
>>> os.getcwd()
"/a/b/c"

要查找当前文件所在的目录(您要在Run.py中执行此操作),请使用

import os
path = os.path.dirname(os.path.realpath(__file__))

in this question所述。然后就可以了

open(os.path.join(path, "File.txt"))

打开右侧File.txt。但请注意,__file__仅适用于实际脚本文件,因此您无法在大多数IDE和交互式解释器中使用它。