本地文件读写依赖文件路径,本节简单介绍下相对路径和绝对路径,只局限在本地路径,不涉及网络路径。

绝对路径

绝对路径就是以根目录为参照系的路径,根目录(windows下是盘符)是固定的,所以每个文件只有一个绝对路径。

Windows下文件夹的地址栏展示的就是当前文件夹的绝对路径,或者打开命令行工具(在地址栏输入cmd),将文件拖进去,命令行中会直接显示文件的绝对路径。

Mac同第二种方法,将文件拖入终端即可展示文件的绝对路径。

绝对路径的优点是很容易获得,且只要文件不移动,路径就不会改变。

它的问题在于:

  1. 文件夹嵌套层数多的时候,很容易变得非常长
  2. 文件位置变化时,其绝对路径也将相应变化。直接问题就是代码从一个电脑挪到另一个电脑时,绝对路径的变化可能导致数据访问失败。

相对路径

相对路径是以当前文件所在目录作为参照系。

举个例子:

python绝对路径改成相对路径 python绝对路径与相对路径_相对路径和绝对路径

A、C、E、data3.csv是层层嵌套关系。

默认情况下Jupyter Notebook的当前文件目录就是指当前代码脚本所在的文件夹。上述例子中的notebook.ipynb运行时当前文件目录实际就是A文件夹。

A文件夹下的文件C、D、data2.csv都是notebook.ipynb的同级文件,在notebook.ipynb中可以直接通过文件名访问到。要访问data2.csv,直接使用相对路径"data2.csv"。

"../"表示向上一层目录,比如notebook.ipynb要访问data1.csv,相对路径就是"../data1.csv"。如果还要再往上一层,就继续在路径前面加一个"../"。

当前路径向下一层则使用"/",比如notebook.ipynb要访问data3.csv,相对路径先找到C也就是"C",再找到E,即"C/E",最后到"C/E/data1.csv"。注意以"/"开头时在Linux和Mac表示根目录,就是绝对路径了。

相对路径的优势在于如果把代码和数据放在一个文件包里,无论这个文件包整体如何移动,代码和数据之间的相对路径都是不变的,当你打包传给别人也能正常运行。

补充一点,Python脚本可以直接改变当前文件目录,而不再是默认的脚本所在文件夹,新手不建议使用。