Python - 获取当前目录/上级目录/上上级目录

本文介绍了在Python开发中如何获取当前目录、上级目录以及上上级目录的方法,包括os.getcwd()、os.path.dirname()、os.path.abspath()和os.path.join()的使用,并通过实例进行演示。
摘要由CSDN通过智能技术生成

/ 前言 /

       我们在Python开发中时常需要读取配置文件、获取当前文件所在路径, 本文将会介绍Python获取当前目录/上级目录/上上级目录…等操作
       Python脚本编译时使用的是Python3.x版本, Python2.x版本也可使用

/ 语法 /

  • os.getcwd()

    获取调用脚本的路径, 这是什么意思呢, 我们来看个例子

    有俩个脚本

  1. get_path.py : /Users/wise/PycharmProjects/deploy/get_path.py

  2. test.py         : /Users/wise/PycharmProjects/deploy/test/test.py

    get_path.py
    # -*- coding: UTF-8 -*-
    import os
    
    def get_path_by_cwd ():
        print(os.getcwd())
    
    get_path_by_cwd()
    

    输出 : /Users/wise/PycharmProjects/deploy

    test.py
    # -*- coding: UTF-8 -*-
    import get_path
    # 调用get_path中的get_path_by_cwd()函数
    get_path.get_path_by_cwd()
    

    输出 : /Users/wise/PycharmProjects/deploy/test

    所以说os.getcwd()函数获取到的是调用该函数的项目路径

  • os.path.dirname()

    获取当前文件所在的目录

    import os
    
    print(os.path.dirname(__file__))
    

    输出 : /Users/wise/PycharmProjects/deploy

  • os.path.abspath()

    获取当前文件的绝对路径

    # -*- coding: UTF-8 -*-
    import os
    
    print(os.path.abspath(__file__))
    

    输出 : /Users/wise/PycharmProjects/deploy/get_path.py

    os.path.abspath()和os.path.dirname()一般都配合着一起使用

    # -*- coding: UTF-8 -*-
    import os
    
    print(os.path.abspath(os.path.dirname(__file__)))
    

    输出 : /Users/wise/PycharmProjects/deploy

  • os.path.join()

    获取多个路径组合后的路径

    # -*- coding: UTF-8 -*-
    import os
      
    print(os.path.join(os.path.dirname(__file__),'join_path'))
    

    输出 : /Users/wise/PycharmProjects/deploy/join_path

    注意 : os.path.join()会自动拼接/, 请不要在参数中开始的位置带/

    否则将前面的参数全部删掉, 如下所示

    # -*- coding: UTF-8 -*-
    import os
      
    print(os.path.join(os.path.dirname(__file__),'/join_path'))
    

    输出 : /join_path

/ 实战操作 /

# -*- coding: UTF-8 -*-
import os

# 获取当前目录
print(os.getcwd())
print(os.path.dirname(__file__))
print(os.path.abspath(os.path.dirname(__file__)))

# 获取上级目录
print(os.path.abspath(os.path.dirname(os.path.dirname(__file__))))
print(os.path.abspath(os.path.dirname(os.getcwd())))
print(os.path.abspath(os.path.join(os.getcwd(), "..")))

# 获取上上级目录
print(os.path.abspath(os.path.join(os.getcwd(), "../..")))

# 获取上上上级目录
print(os.path.abspath(os.path.join(os.getcwd(), "../../..")))

# ...以此类推

输出

-------------获取当前目录-------------
/Users/wise/PycharmProjects/deploy
/Users/wise/PycharmProjects/deploy
/Users/wise/PycharmProjects/deploy

-------------获取上级目录-------------
/Users/wise/PycharmProjects
/Users/wise/PycharmProjects
/Users/wise/PycharmProjects

-------------获取上上级目录-------------
/Users/wise

-------------获取上上上级目录-------------
/Users
好的,这里为你提供一个Python实现的可登录的简易点餐系统的实现代码: ```python # 定义管理员账号密码 admin_username = 'root' admin_password = 'admin123' # 定义菜单 menu = { 1: {'name': '烤鸭', 'price': 98}, 2: {'name': '水煮牛肉', 'price': 68}, 3: {'name': '宫保鸡丁', 'price': 58}, 4: {'name': '鱼香肉丝', 'price': 48}, 5: {'name': '红烧肉', 'price': 38}, } # 定义订单列表 order = [] # 显示菜单 def show_menu(): print('菜单如下:') for k, v in menu.items(): print(k, v['name'], v['price'], '元') # 点餐 def order_dish(): while True: dish_no = input('请输入菜品编号(输入0结束点餐):') if dish_no == '0': break if int(dish_no) not in menu: print('该菜品不存在,请重新输入!') continue dish_count = input('请输入菜品数量:') dish_name = menu[int(dish_no)]['name'] dish_price = menu[int(dish_no)]['price'] order.append({'name': dish_name, 'price': dish_price, 'count': int(dish_count)}) print('您已成功点餐:', dish_name, dish_price, '元 x', dish_count) # 查询订单 def query_order(): print('您的订单如下:') for dish in order: print(dish['name'], dish['price'], '元 x', dish['count']) # 管理员子系统 def admin_system(): print('欢迎进入管理员子系统!') # TODO: 实现添加、修改、删除、查询菜品、查询和取消点餐订单和返回上级菜单功能 pass # 登录页面 def login(): for i in range(3): role = input('请选择角色(1.管理员,2.客户):') if role == '1': username = input('请输入账号:') password = input('请输入密码:') if username == admin_username and password == admin_password: print('管理员登录成功!') admin_system() break else: print('账号或密码错误!') elif role == '2': print('客户登录成功!') show_menu() order_dish() query_order() break else: print('角色选择错误,请重新选择!') else: print('登录失败!') # 主程序 while True: print('欢迎使用点餐系统!') login() cont = input('是否继续使用点餐系统(Y/N):') if cont.upper() != 'Y': break print('感谢使用点餐系统!') ``` 这个点餐系统实现了管理员登录、显示菜单、点餐、订单查询等功能。你可以根据需要进行修改和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值