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:解决切换当前工 ...
随机推荐
- Task02:基础查询与排序
2.1 SELECT语句基础 2.1.1 从表中选取数据 SELECT语句 从表中选取数据时需要使用SELECT语句,也就是只从表中选出(SELECT)必要数据的意思.通过SELECT语句查询并选取出 ...
- 【C++】vector容器的用法
检测vector容器是否为空: 1 #include <iostream> 2 #include <string> 3 #include <vector> 4 us ...
- You Only Look One-level Feature
你只需要看一个层次的特征 摘要:本文回顾了单阶段检测器的特征金字塔网络(FPN),指出FPN的成功在于其对目标检测优化问题的分治解决,而不是多尺度特征融合.从优化的角度来看,我们引入了一种替代的方法来 ...
- Spring Cloud 和 Dubbo,到底用哪个好?
Spring Cloud是http协议传输,带宽会比较多,同时使用http协议一般会使用JSON报文,消耗会更大 dubbo的开发难度较大,原因是dubbo的jar包依赖问题很多大型工程无法解决 sp ...
- noip2010 总结
机器翻译 题目背景 小晨的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章. 题目描述 这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义来替换.对于每个英文单词 ...
- DOS命令行(9)——wmic-系统管理命令行工具
wmic 介绍与语法 WMI(Windows Management Instrumentation,Windows 管理规范)是一项核心的 Windows 管理技术:用户可以使用 WMI 管理本地和远 ...
- 感知机与支持向量机 (SVM)
感知机与SVM一样都是使用超平面对空间线性可分的向量进行分类,不同的是:感知机的目标是尽可能将所有样本分类正确,这种策略指导下得出的超平面可能有无数个,然而SVM不仅需要将样本分类正确,还需要最大化最 ...
- Netty 框架学习 —— 编解码器框架
编解码器 每个网络应用程序都必须定义如何解析在两个节点之间来回传输的原始字节,以及如何将其和目标应用程序的数据格式做相互转换.这种转换逻辑由编解码器处理,编解码器由编码器和解码器组成,它们每种都可以将 ...
- 透彻理解USB总线应用之枚举
Hello,大家好,今天我们来讨论一下USB总线中的枚举(Enumeration),首先简单介绍一下USB系统的基本架构,它由USB主机.USB设备与USB电缆(本文忽略它)组成,如下图所示: 最常见 ...
- Integer Inquiry 大数加法
Integer Inquiry 1 import java.util.*; 2 import java.math.*; 3 import java.io.*; 4 import java.text.* ...