python 获取路径不同方法的比较

Posted 吴增丁

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 获取路径不同方法的比较相关的知识,希望对你有一定的参考价值。

在软件中经常需要获取文件所在路径,方法有很多种( 例如 os.path.realpath(__file__), os.getcwd(), os.path.abspath(__file__),  sys.path[0],  sys.argv[0]),但是各有不同,比较如下:

 

在一个NIPT_Analysis-V1.3.02.3.py 的程序中,编写测试代码如下,

temp_file = open("X:/WZD/temp/tempfile.txt","w")
curr_path0 = os.path.realpath(__file__)
curr_path1 = os.getcwd()
curr_path2 = os.path.abspath(__file__)
curr_path3 = sys.path[0]
curr_path4 = sys.argv[0]
path0 = os.path.dirname(curr_path0)
path1 = os.path.dirname(curr_path1)
path2 = os.path.dirname(curr_path2)
path3 = os.path.dirname(curr_path3)
path4 = os.path.dirname(curr_path4)
temp_file.write("curr_path0"+"\\t"+curr_path0+"\\t"+"path0"+"\\t"+path0+"\\n")
temp_file.write("curr_path1"+"\\t"+curr_path1+"\\t"+"path1"+"\\t"+path1+"\\n")
temp_file.write("curr_path2"+"\\t"+curr_path2+"\\t"+"path2"+"\\t"+path2+"\\n")
temp_file.write("curr_path3"+"\\t"+curr_path3+"\\t"+"path3"+"\\t"+path3+"\\n")
temp_file.write("curr_path4"+"\\t"+curr_path4+"\\t"+"path4"+"\\t"+path4+"\\n")
temp_file.close()

  

将该程序放置目录 X:\\WZD\\NIPT_Analysis_software\\NIPT_Analysis-V1.3.02.3下,

然后编写.bat文件来调用NIPT_Analysis-V1.3.02.3.py 程序。将.bat文件放置在目录 X:\\WZD\\NIPT_Analysis_software下,

运行.bat文件,完毕后生成"X:/WZD/temp/tempfile.txt 文件,结果是:

 

然后用pyinstaller将 NIPT_Analysis-V1.3.02.3.py 打包成NIPT_Analysis-V1.3.02.3.exe文件,并替换.py文件,

再用.bat文件来调用NIPT_Analysis-V1.3.02.3.exe 程序。将.bat文件放置在目录 X:\\WZD\\NIPT_Analysis_software下,

运行结果如下:

 

最终选择curr_path4 = sys.argv[0]作为获取NIPT_Analysis-V1.3.02.3.py 文件路径的方法。

注释:回过头来看,以上都有些问题,这是由于我当时理解不清,后来发现一篇好的文章,这个写的比较清晰 https://blog.csdn.net/vitaminc4/article/details/78702852

以上是关于python 获取路径不同方法的比较的主要内容,如果未能解决你的问题,请参考以下文章

Android 使用两个不同的代码片段获取当前位置 NULL

python 用于获取包含代码段的脚本的完整路径的Python代码段。 (适合找到不同位置的工作空间)

Python - 模块

python里读取文件路径上一级路径及文件的方法

如何将微调器的值放入不同的片段中?

python 获取当前,上级,上上级路径(任何上级路径)