python获取文件路径
一、使用:在框架搭建中,需要获取配置文件所在的路径等
def file_oper():
path = os.getcwd()+ '\pickle.txt' # 返回当前工作目录
path2 = os.path.abspath(r'C:\Users\viruser.v-desktop\PycharmProjects\hexin\practice\pickle.txt') # 除非写入绝对路径,否则返回当前工作路径/拼接路径
path3 = os.path.dirname(r'C:\Users\viruser.v-desktop\PycharmProjects\hexin\practice\pickle.txt') # 返回路径的目录 (上一层)
path4 = os.path.abspath(__file__) # 返回当前文件的路径
print('{0}\n {1}\n {2}\n{3}'.format(path,path2,path3,path4))
》》》 >>>
C:\Users\viruser.v-desktop\PycharmProjects\hexin\practice\pickle.txt
C:\Users\viruser.v-desktop\PycharmProjects\hexin\practice\pickle.txt
C:\Users\viruser.v-desktop\PycharmProjects\hexin\practice
C:\Users\viruser.v-desktop\PycharmProjects\hexin\practice\practice_9.6.py
getcwd():是返回当前工作路径,即调用运行的文件路经
abspath('./byy.py'):路径的计算是以程序运行的当前目录来进行计算的,或者说abspath只是字符串拼接,并非从文件本身属性进行获取
例:
1、文件目录结构:
2、common_FileRead.py文件
common_FileRead.py中编写读取文件common_path.yml并返回common_path.yml的内容
def get_path(file_name): yaml_path = os.path.abspath('./common_path.yml') # 获取yml文件的路径 ,本意以当前文件计算
# abspath/getcwd均是通过字符串拼接,即从程序运行的当前目录进行计算,即从调用文件business_common.py开始计算路径,导致路径错误,找不到文件
yaml_file = open(yaml_path, encoding='utf-8') datas = yaml.load(yaml_file, Loader=yaml.FullLoader) path = datas[file_name] return path
3、business_common.py
获取get_path(file_name)返回值
def hx_login(): basewindow = BaseWindow() """ 登录行情 :return: """ # 启动行情客户端 client_path = get_path('client_path') print(client_path) Business_Common.hx_login()
运行报错: FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\viruser.v-desktop\\PycharmProjects\\PC_UiAutomation\\Business\\common_path.yml'
报错原因:
yaml_path = os.path.abspath('./common_path.yml')是从程序运行的当前目录进行计算,即从business_common.py开始计算路径,导致路径错误,找不到文件
修改:因此需获取本文件绝对路径,再进行拼接
root_path = os.path.dirname(os.path.dirname(__file__))
common_path = os.path.join(root_path, 'Common\common_path.yml')