Python基础之获取路径与切换路径
一直以为我写了关于路径有关的博客,看了一圈才发现没写,那么现在就来整理下。
一、获取当前路径
os.getcwd()
二、获取当前文件路径:(__file__是当前执行文件)
os.path.abspath(__file__)
三、获取主程序路径
os.path.abspath(sys.argv[0])
四、获取主程序目录
os.path.abspath(sys.path[0])
接下来举个例子看下,创建了两个文件,运行play.py程序。
play.py
#!/usr/bin/env python
# _*_ coding: UTF-8 _*_
"""=================================================
@Project -> File : Operate_system_ModeView_structure -> play.py
@IDE : PyCharm
@Author : zihan
@Date : 2020/5/11 14:40
@Desc :
================================================="""
from play1 import * if __name__ == '__main__':
# 获取当前路径
print("打印当前路径:", end='')
print(os.getcwd()) # 获取当前文件的路径(__file__是当前执行的文件)
print("打印当前文件路径:", end='')
print(os.path.abspath(__file__)) # 用play1.py里面的函数打印__file__的路径
print("打印当前文件路径(1):", end='')
print_file_path() # 打印主程序的路径
print("打印主程序路径:", end='')
print(os.path.abspath(sys.argv[0])) # 用play1.py里面的函数打印主程序路径
print("打印主程序路径(1):", end='')
print_main_path() # 打印主程序目录
print("打印主程序目录:", end='')
print(os.path.abspath(sys.path[0]))
play1.py
#!/usr/bin/env python
# _*_ coding: UTF-8 _*_
"""=================================================
@Project -> File : Operate_system_ModeView_structure -> play1.py
@IDE : PyCharm
@Author : zihan
@Date : 2020/5/11 14:58
@Desc :
================================================="""
import os
import sys def print_file_path():
print(os.path.abspath(__file__)) def print_main_path():
print(os.path.abspath(sys.argv[0]))
运行结果:
打印当前路径:F:\gitplay\Operate_system_ModeView_structure\20200511\路径问题总结
打印当前文件路径:F:\gitplay\Operate_system_ModeView_structure\20200511\路径问题总结\play.py
打印当前文件路径(1):F:\gitplay\Operate_system_ModeView_structure\20200511\路径问题总结\play1.py
打印主程序路径:F:\gitplay\Operate_system_ModeView_structure\20200511\路径问题总结\play.py
打印主程序路径(1):F:\gitplay\Operate_system_ModeView_structure\20200511\路径问题总结\play.py
打印主程序目录:F:\gitplay\Operate_system_ModeView_structure\20200511\路径问题总结
要区分目录和文件路径:
1. os.getcwd()获取的是当前路径,得到的是当前目录,如果在程序运行过程中有路径切换,那么执行os.getcwd()得到的值是不同的
2. __file__是当前执行的文件,打印__file__的路径,就是当前文件的路径
3. sys.argv[0]是主文件的路径,不管引用了多少个py文件,它始终都是主文件的路径,不会变。
4. sys.path[0]是主程序的目录路径,它同样始终都是主程序的目录,不会变。
参考链接:https://www.cnblogs.com/xiyuan2016/p/9187695.html
五、获取上级目录
os.path.abspath(os.path.dirname(os.path.dirname(__file__)))
os.path.abspath(os.path.dirname(os.getcwd()))
os.path.abspath(os.path.join(os.getcwd(), ".."))
六、获取上上级目录
os.path.abspath(os.path.join(os.getcwd(), "../.."))
七、切换路径
os.chdir(path)
play.py
#!/usr/bin/env python
# _*_ coding: UTF-8 _*_
"""=================================================
@Project -> File : Operate_system_ModeView_structure -> play.py
@IDE : PyCharm
@Author : zihan
@Date : 2020/5/11 14:40
@Desc :
================================================="""
from play1 import * if __name__ == '__main__':
# 获取当前路径
print("打印当前目录:", end='')
print(os.getcwd()) # 获取上层目录
print("打印当前文件目录的上层目录:", end='')
print(os.path.abspath(os.path.dirname(os.path.dirname(__file__)))) print("打印当前目录的上层目录:", end='')
print(os.path.abspath(os.path.dirname(os.getcwd()))) print("打印当前目录的上层目录(2):", end='')
print(os.path.abspath(os.path.join(os.getcwd(), ".."))) # 获取上上级目录
print("打印当前目录的上上级目录:", end='')
print(os.path.abspath(os.path.join(os.getcwd(), "../.."))) # 获取当前文件的路径(__file__是当前执行的文件)
print("打印当前文件路径:", end='')
print(os.path.abspath(__file__)) # 用play1.py里面的函数打印__file__的路径
print("打印当前文件路径(1):", end='')
print_file_path() # 打印主程序的路径
print("打印主程序路径:", end='')
print(os.path.abspath(sys.argv[0])) # 用play1.py里面的函数打印主程序路径
print("打印主程序路径(1):", end='')
print_main_path() # 打印主程序目录
print("打印主程序目录:", end='')
print(os.path.abspath(sys.path[0])) # 切换路径到根路径
path = "F:/"
os.chdir(path)
print("切换后的路径:", end='')
print(os.getcwd())
运行结果:
打印当前目录:F:\gitplay\Operate_system_ModeView_structure\20200511\路径问题总结
打印当前文件目录的上层目录:F:\gitplay\Operate_system_ModeView_structure\20200511
打印当前目录的上层目录:F:\gitplay\Operate_system_ModeView_structure\20200511
打印当前目录的上层目录(2):F:\gitplay\Operate_system_ModeView_structure\20200511
打印当前目录的上上级目录:F:\gitplay\Operate_system_ModeView_structure
打印当前文件路径:F:\gitplay\Operate_system_ModeView_structure\20200511\路径问题总结\play.py
打印当前文件路径(1):F:\gitplay\Operate_system_ModeView_structure\20200511\路径问题总结\play1.py
打印主程序路径:F:\gitplay\Operate_system_ModeView_structure\20200511\路径问题总结\play.py
打印主程序路径(1):F:\gitplay\Operate_system_ModeView_structure\20200511\路径问题总结\play.py
打印主程序目录:F:\gitplay\Operate_system_ModeView_structure\20200511\路径问题总结
切换后的路径:F:\
这些就是关于一般路径的获取问题了。
Python基础之获取路径与切换路径的更多相关文章
- 【python基础】使用import导入相对路径的源文件
前言 在编写python代码的过程中,不同路径下的源码文件该如何引用,这是个问题,本文针对这个问题介绍解决方法. 源码目录结构: . ├── conf.py ├── main.py ├── mod/ ...
- Python基础之分离文件名和文件路径
参考链接:https://blog.csdn.net/qq_42110481/article/details/81104182 分离文件名与文件路径: import os if __name__ == ...
- Python基础:获取平台相关信息
Windows 10家庭中文版,Python 3.6.4, 本文介绍了使用os.platform.sys三个模块获取Python程序的运行平台相关的信息. os模块:提供 各种各样的操作系统接口 os ...
- python基础之获取版本信息
在工作中经常会需要确定使用的py的版本信息,以便适配更多的系统,达到更大的兼容性. 一般关于python的信息和参数都要调用sys模块,关于操作系统的信息和调用都要使用os模块 所以这次我们使用sys ...
- Python基础(获取对象信息)
import types print(type('abc') == str)#True print(type(123) == int)#True def f1(): pass print(type(f ...
- 【转载】路径双反斜杠!!!Python IDLE或Python shell中切换路径 切换目录os.chdir("C:\\python37\\2019pythonshel37\\diedai")
Python IDLE或shell中切换路径在Python自带的编辑器IDLE中或者python shell中不能使用cd命令,那么跳到目标路径呢.方法是使用os包下的相关函数实现路径切换功能. im ...
- 【python基础语法】OS模块处理文件绝对路径,内置的异常类型、捕获、处理(第9天课堂笔记)
import os """ 通过文件的路径去打开文件 相对路径:相对当前的工作路径去定位文件位置 .:代表当前路径 ..:代表上一级路径(父级路径) 绝对路径:相对于电脑 ...
- python基础之open函数和路径处理
前言 本次内容主要介绍文件处理open函数以及路径处理. 一.open函数 根据前面介绍的函数调用方式,调用open函数. #open函数调用 open() TypeError: open() mis ...
- [Python学习]错误篇二:切换当前工作目录时出错——FileNotFoundError: [WinError 3] 系统找不到指定的路径
REFERENCE:<Head First Python> ID:我的第二篇[Python学习] BIRTHDAY:2019.7.13 EXPERIENCE_SHARING:解决切换当前工 ...
随机推荐
- jmeter+ant+jenkins框架搭建问题
工具介绍: jmeter 接口编写,调试,执行. ant Ant是Java的生成工具,都是用来编译.生成:Ant的主要目的就是把你想做的事情自动化,不用你手动一步一步做,因为里面内置了java ...
- Django基础之cookie与session
cookie与session 由来及简介 HTTP协议四大特性 1.基于请求响应 2.基于TCP.IP作用于应用层之上 3.无连接 4.无状态 基于HTTP协议的通信无法记录客户端状态 但是现在很多软 ...
- 身为一枚优秀的程序员必备的基于Redis的分布式锁和Redlock算法
1 前言 今天开始来和大家一起学习一下Redis实际应用篇,会写几个Redis的常见应用. 在我看来Redis最为典型的应用就是作为分布式缓存系统,其他的一些应用本质上并不是杀手锏功能,是基于Redi ...
- csp-s模拟测试41「夜莺与玫瑰·玫瑰花精·影子」
夜莺与玫瑰 题解 联赛$T1$莫比乌斯$\%\%\%$ $dead$ $line$是直线 首先横竖就是$n+m$这比较显然 枚举方向向量 首先我们枚举方向向量时只枚举右下方向,显然贡献$*2$就是所 ...
- No serializer found for class com.bean.user and no properties discovered to create BeanSerializer
解决方法: 方法1:将bean目录下的实体类属性由private改为public(不推荐): 方法2:给实体类属性设置setter和getter方法(推荐使用).
- Redis的Pipeline、事务和lua
1. Pipeline 1.1 Pipeline概念 Redis客户端执行一条命令分别为如下4个过程: 1) 发送命令 2) 命令排队 3) 命令执行 4) 返回结果 其中1)+4)称为Round T ...
- css 设置body背景图片铺满
background-image: url(../../../assets/images/workflow/work.png); background-repeat: no-repeat; backg ...
- Zoho Books十年发展历程
十年前,我们推出Zoho Books的时候,是为了全面解决企业面临的财务和会计方面的挑战.我们逐渐地从一开始的易用的中小企业在线会计工具,发展成为现在的解决企业复杂的财务挑战的解决方案,其中经历了很多 ...
- CRM系统什么时候需要使用
CRM客户关系管理系统,相信每个人都会有所了解.现如今随着企业的发展需求,CRM软件已经成为了企业管理的刚需.无论是何种行业和规模的企业,客户都是最重要的资源,提高客户满意度也是企业的首要任务.如果您 ...
- Springboot集成RabbitMQ之MessageConvert源码解析
问题 最近在使用RabbitMq时遇到了一个问题,明明是转换成json发送到mq中的数据,消费者接收到的却是一串数字也就是byte数组,但是使用mq可视化页面查看数据却是正常的,之前在使用过程中从未遇 ...