在测试过程中,通常需要读取文件或写入文件,当要读写的文件和当前文件不在同一目录时,用相对路径经常会报找不到文件的错误。所以为了解决这个问题,我们通常在读写文件时,使用绝对路径。
但是文件路径写为绝对路径,可以直接写死吗?显然不能,如果写死了,这个代码就只能在当前的机器上运行了。我们今天就来解决这个问题。通过当前文件路径来获取要读写文件相对于当前文件的相对路径。
import os
#获取当前文件的绝对路径
os.path.realpath(__file__)
#获取当前文件所在的目录的路径
os.path.dirname(os.path.realpath(__file__))
#获取当前文件所在目录的上一级目录的路径,os.path.dirname()可以多次使用,直到到达要读写的文件所在的上一级目录为止
dir_path = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
要读取config目录下的data.yaml文件
path = os.path.join(dir_path, "config", "data.yaml")
这时path即为data.yaml的路径
#获取当前文件的绝对路径
os.path.realpath(__file__)
#获取当前路径的父级目录
os.path.dirname()
#要读取的文件的绝对路径为:path/dir/文件名称
os.path.join(path,"dir","文件名称")