python获取程序执⾏⽂件路径的⽅法(推荐)
1.获取当前执⾏主脚本⽅法:sys.argv[0]和_ file _
(1)sys.argv
⼀个传给Python脚本的指令参数列表。sys.argv[0]是脚本的名字。⼀般得到的是相对路径,⽤os.path.abspath(sys.argv[0])得到执⾏⽂件的绝对路径:
python中的字符串是什么dirname, filename = os.path.split(os.path.abspath(sys.argv[0]))
alpath(sys.argv[0])
如果在命令⾏执⾏sys.argv返回解释器路径:[‘/Library/Frameworks/Python.framework/Versions/3.6/bin/ipython3']
(2)_ _ file_ _
获得当前执⾏模块所在的路径,⼀般为相对路径,⽤os.path.abspath(_ _ file_ _)得到执⾏⽂件的绝对路径:
dirname, filename = os.path.split(os.path.abspath( _ _ file_ _))
alpath(_ _ file_ _)
注意:Python控制台下,直接使⽤print _ _ file _ 是会导致 name ‘ _ file _ ' is not defined错误的,因为这时没有在任何⼀个脚本下执⾏,⾃然没有 _ file _ _的定义了。
(3)sys.argv[0]和_ _ file _ _的差异:在主执⾏⽂件中时,两者没什么差异,不过要是在不同的⽂件下,就不同了,如a.py,b.py 这两个⽂件
执⾏a.py结果如下:
如上图结果可以看出:如果都是a.py两者结果⽆异,但是从在a中导⼊b时执⾏的sys.argv[0]还是指的是运⾏的主⽂件:a.py⽽
_ _ file_ _却输出的是b.py
2.sys.path
模块搜索路径的字符串列表。由环境变量PYTHONPATH初始化得到。是⼀个⽬录的列表,sys.path[0]是调⽤Python解释器的当前脚本所在的⽬录,即主执⾏⽂件的⽗级⽬录。
例⼦:如在/user/ybp/a.py的⽂件a.py中执⾏:print(sys.path[0])==>/user/ybp,
在命令⾏执⾏返回空字符串;
3.注意os.path是系统环境变量,要与上⾯区分开来,没有os.path[0],os.path中的⼀些⽅法:
(1)os.path.split(path)
将路径名称分成头和尾⼀对。尾部永远不会带有斜杠。如果输⼊的路径以斜杠结尾,那么得到的空的尾部。
如果输⼊路径没有斜杠,那么头部位为空。如果输⼊路径为空,那么得到的头和尾都是空。
(2)alpath(path)
返回特定⽂件名的绝对路径,可以在命令⾏中执⾏。
wd()返回的是当前⼯作路径,⽽不⼀定需要是在脚本⾥⾯执⾏,这个命令相当于pwd,可以在命令⾏中执⾏,返回的是绝对路径;
以上这篇python获取程序执⾏⽂件路径的⽅法(推荐)就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。