重新认识path之中的路径

重新认识path之中的路径

背景

在一个项目中,需要获取上一层文件地址。结构如下:
重新认识path之中的路径
即想在dtl2.py中读取到datas文件夹下面的csv数据。
之前的代码如下:

cwd = os.getcwd()
dirname = os.path.dirname(cwd)
## 构建数据路径
data_abs_path = 'datas\双十一淘宝美妆数据.csv'
data_path = os.path.join(dirname, data_abs_path)
print(data_path)

后面感觉不是特别合理,应该用绝对路径的。且感觉对python中的路径不是特别熟悉。

关于OS模块

OS:operating system
该模块与操作系统有关,比如

cwd = os.getcwd()

为了获取到当前工作目录,打印值为:etl文件夹目录。

关于os.path

专门操作文件路径的模块,所以该模块函数的传参基本都是有path,代表文件所在路径。
比如os.path.abspath(path),os.path.exists(path)等,详细函数见:
Python3 os.path() 模块

总结

若是想要读取上一层工作目录的文件,在不改变工作路径提前下,必须先用os.getcwd()函数获取到当前工作路径。然后可以有两种方法处理:

  • 法1:
cwd = os.getcwd()  # 获取当前工作路径
dirname = os.path.dirname(cwd)  # 获取当前工作路径的上一层
## 构建数据路径
data_abs_path = 'datas\双十一淘宝美妆数据.csv'
data_path = os.path.join(dirname, data_abs_path) 
print(data_path)

这种方法利用了os.path.dirname()函数,对面只跳一层比较简单,但是如果要跳几层,比如想要获取上述两层文件夹中的文件,这种写法就非常不好,代码比较冗杂。

  • 法2:
data_path = os.path.join(os.getcwd(), "..\datas\双十一淘宝美妆数据.csv")

这种方法利用了…\的写法。直接基于当前路径下,往上层移动,这种方法相比于法1更加好,表现了可读性和效率上。

上一篇:SAS - 合并数据集(一)


下一篇:严蔚敏数据结构习题第五章