2017-10-16 152 views
0

我希望我的Python脚本能够被其他文件夹设置的人运行,因此使用对Python脚本保存的文件夹的引用很有意义。例如:如果我的脚本“script_1.py”从“C:\ My Scripts \ script_1.py”运行,我想将“C:\ My Scripts”保存到我可以使用的变量中。我的Python脚本所在的文件夹的路径是什么?

但是,我无法得到它太工作。

我已经进口的操作系统和对称,但使用os.path.dirname(__file__)os.path.abspath(__file__)提供错误消息:

Traceback (most recent call last): 

File "<ipython-input-24-1830932ce69b>", line 1, in <module> 
os.path.dirname(__file__) 

NameError: name '__file__' is not defined 

使用sys.executable给我的地址是安装我的Python在那里(我想??这不无论如何,给我我想要的东西)。

我也给出的建议尝试os.environ['_']但给:

Traceback (most recent call last): 

File "<ipython-input-26-6c75f8b10c6d>", line 1, in <module> 
os.environ['_'] 

File "D:\Continuum\Anaconda3\lib\os.py", line 669, in __getitem__ 
    raise KeyError(key) from None 

KeyError: '_' 

我的方式运行我的代码从Windows 10。它是Python 3.

+3

'__file__'是给你一个错误,因为你在一个交互式会话使用它,有没有文件,试图让这么想的意义 – jonatan

+0

@jonatan我不知道该文件,但它很有意义。谢谢。 –

回答

1

这会给你脚本的位置。

import os 
import sys 
script_location = os.path.split(os.path.realpath(sys.argv[0]))[0] 
+0

什么时候比'script_location = __file__'好?如果导入,'__file__'仍然可以工作,但这不会。 – jonatan

+0

好问题......从来没有真正想过。我想唯一真正的区别是'__file__'会给你正在执行的当前文件的位置,不一定是你的主程序......所以这取决于你想要弄清楚什么? –

相关问题