原文链接:http://www.juzicode.com/archives/1635
1、工作路径
工作路径是伴随着进程或者当前运行程序而存在的,表示该进程或者运行程序是在哪个路径下被打开的。比如下面这个例子在 “E:\juzicode” 路径下运行cmd命令行,则该cmd命令行的工作目录就是提示符”>”之前表示的路径:

在这个路径下如果打开某个进程,比如启动一个python解释器,当前python进程的工作路径就是该命令行启动时所在的工作路径,可以用os.getcwd()获取到,下面这个例子中是在”E:\juzicode”下启动python的,所以用os.getcwd()获取的当前工作路径就是“E:\juzicode”,需要注意如果用当前工作路径拼接路径时,当前工作路径的最后一个斜杠“\”是没有的,需要手动添加:

2、绝对路径
Windows下绝对路径就是指包含从盘符开始的完整路径,这个比较好理解,比如 E:\juzicode\com 就是一条绝对路径。
3、相对路径
相对路径有一个“相对”的对象就是当前工作路径,要搞清楚相对路径先要明白当前工作路径。如果在cmd命令行下调试,提示符“>”之前的这段字符就是当前工作路径。当前工作路径的基础上,使用”..\\”(上一层目录)组合出来的路径就是一种相对路径,直接看个例子,在路径 E:\juzicode\com 下的文件夹结构是这样的:

假设当前工作路径在E:\juzicode\com\1\2\3\4\5\,需要用TYPE命令打印出 E:\juzicode\com\1\2a目录下的readme.txt的文件内容,看下如果用相对路径怎么表示,因为2a目录在 E:\juzicode\com\1\ 之下,所以需要用连续4个“..\”从 E:\juzicode\com\1\2\3\4\5\ 回到 E:\juzicode\com\1\ 之下,然后再加入2a\组合出要访问的路径:

同样的,如果是在“E:\juzicode\com\1\2\3\4\5”路径下打开python解释器,要读取“E:\juzicode\com\1\2a”路径下的readme.txt文件,就可以使用相对路径”..\..\..\..\2a\readme.txt”打开文件:

当然我们也可以用绝对路径“E:\juzicode\com\1\2a\readme.txt”来打开文件,但是使用绝对路径有个问题就是如果整体移动com文件夹到其他的路径下,绝对路径就会失效。另外一个例子就是在VS等工程文件的配置中,使用相对路径的方式可移植性就要更好些。
