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:解决切换当前工 ...
随机推荐
- NOIP模拟测试3「序列·熟练剖分·建造游乐园(play)」
---恢复内容开始--- 序列 刚调出来样例就A了,假装是水题. 因为是乱序,我们要求出来每两项之间最小公比,而不是直接比 求出来每两项之间最小公比,然后扫一遍就完了.(还要注意重复情况) 那么问题就 ...
- 老公 今晚还玩“丝袜哥”Swagger 么?
大家都知道Swagger是一个常用的Spring Boot接口文档生成工具,但是我们今天再介绍另外一个无需额外注解的 Spring Boot API文档生成神器,非常方便好用! JApiDocs是一个 ...
- C#异步迭代 IAsyncEnumerable 应用
最近用WPF做金税盘开发中有这样一个需求,批量开票每次开票都需要连接一次金税盘. 比如我有发票 a, b ,c ,d e 这五张发票,每次开具发票都需要调用金税盘底层,才能正常开票. 首先,尝试写第一 ...
- JWT理论知识
JWT学习文章: 第一篇:JWT原理 第二篇:JWT原理实现代码 简介 JWT全拼是JSON Web Tocken,是目前最流行的跨域身份认证解决方案,特别适合分布式系统,减少用户麻烦,保证账号安全, ...
- Java并发之Semaphore源码解析(二)
在上一章,我们学习了信号量(Semaphore)是如何请求许可证的,下面我们来看看要如何归还许可证. 可以看到当我们要归还许可证时,不论是调用release()或是release(int permit ...
- 通过Cloudflare API进行CDN刷新
1.Cloudflare CDN刷新说明 1.Cloudfalre同Akamai一样,只有刷新,没有预热的概念. 2.通过Cloudflare API进行刷新,需要用到登录用户的[邮箱][api密钥] ...
- Android Studio用上国产杰出代表夜神模拟器
背景介绍 在Windows上除了官方的AVD(Android Virtual Device)我们还可以使用更加便捷的国产安卓模拟器,比如杰出的代表就是夜神模拟器. 我们现在是假设你已经安装好了Andr ...
- 广州小公司:List集合你是熟悉的,对吧?
<对线面试官>系列目前已经连载27篇啦!有深度风趣的系列! [对线面试官]Java注解 [对线面试官]Java泛型 [对线面试官] Java NIO [对线面试官]Java反射 & ...
- layui tabs选项卡 响应试不显示问题
添加: var element = layui.element; //Tab的切换功能,切换事件监听等,需要依赖element模块 element.init();
- Gym 101308D Database 枚举
大致题意: 给出一张表,n行m列,每一行的列用逗号分隔.判断这个表是否有冗余元素.如果一张表中有两行两列对应的的元素相同,那么这个表就有冗余元素. 分析: 先枚举要排序的列,然后枚举行,如果相邻两行相 ...