我有脚本调用其他脚本文件,但我需要获得当前在进程中运行的文件的文件路径。
例如,假设我有三个文件。使用execfile:
Script_1.py调用script_2.py。 反过来,script_2.py调用script_3.py。
如何从script_3.py内的代码中获得script_3.py的文件名和路径,而不必将该信息作为script_2.py的参数传递?
(执行os.getcwd()返回初始脚本的文件路径,而不是当前文件的文件路径。)
我有脚本调用其他脚本文件,但我需要获得当前在进程中运行的文件的文件路径。
例如,假设我有三个文件。使用execfile:
Script_1.py调用script_2.py。 反过来,script_2.py调用script_3.py。
如何从script_3.py内的代码中获得script_3.py的文件名和路径,而不必将该信息作为script_2.py的参数传递?
(执行os.getcwd()返回初始脚本的文件路径,而不是当前文件的文件路径。)
当前回答
下面返回当前主脚本所在的路径。我用Linux、Win10、IPython和Jupyter Lab进行了测试。我需要一个解决方案,工作于本地Jupyter笔记本电脑以及。
import builtins
import os
import sys
def current_dir():
if "get_ipython" in globals() or "get_ipython" in dir(builtins):
# os.getcwd() is PROBABLY the dir that hosts the active notebook script.
# See also https://github.com/ipython/ipython/issues/10123
return os.getcwd()
else:
return os.path.abspath(os.path.dirname(sys.argv[0]))
其他回答
import sys
print sys.argv[0]
下面返回当前主脚本所在的路径。我用Linux、Win10、IPython和Jupyter Lab进行了测试。我需要一个解决方案,工作于本地Jupyter笔记本电脑以及。
import builtins
import os
import sys
def current_dir():
if "get_ipython" in globals() or "get_ipython" in dir(builtins):
# os.getcwd() is PROBABLY the dir that hosts the active notebook script.
# See also https://github.com/ipython/ipython/issues/10123
return os.getcwd()
else:
return os.path.abspath(os.path.dirname(sys.argv[0]))
import sys
print sys.path[0]
这将打印当前执行脚本的路径
试试这个,
import os
os.path.dirname(os.path.realpath(__file__))
import os
print os.path.basename(__file__)
这将只给我们文件名。例如,如果文件的abspath是c:\abcd\abc.py,那么第二行将打印abc.py