一直以为我写了关于路径有关的博客,看了一圈才发现没写,那么现在就来整理下。

一、获取当前路径

  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基础之获取路径与切换路径的更多相关文章

  1. 【python基础】使用import导入相对路径的源文件

    前言 在编写python代码的过程中,不同路径下的源码文件该如何引用,这是个问题,本文针对这个问题介绍解决方法. 源码目录结构: . ├── conf.py ├── main.py ├── mod/ ...

  2. Python基础之分离文件名和文件路径

    参考链接:https://blog.csdn.net/qq_42110481/article/details/81104182 分离文件名与文件路径: import os if __name__ == ...

  3. Python基础:获取平台相关信息

    Windows 10家庭中文版,Python 3.6.4, 本文介绍了使用os.platform.sys三个模块获取Python程序的运行平台相关的信息. os模块:提供 各种各样的操作系统接口 os ...

  4. python基础之获取版本信息

    在工作中经常会需要确定使用的py的版本信息,以便适配更多的系统,达到更大的兼容性. 一般关于python的信息和参数都要调用sys模块,关于操作系统的信息和调用都要使用os模块 所以这次我们使用sys ...

  5. Python基础(获取对象信息)

    import types print(type('abc') == str)#True print(type(123) == int)#True def f1(): pass print(type(f ...

  6. 【转载】路径双反斜杠!!!Python IDLE或Python shell中切换路径 切换目录os.chdir("C:\\python37\\2019pythonshel37\\diedai")

    Python IDLE或shell中切换路径在Python自带的编辑器IDLE中或者python shell中不能使用cd命令,那么跳到目标路径呢.方法是使用os包下的相关函数实现路径切换功能. im ...

  7. 【python基础语法】OS模块处理文件绝对路径,内置的异常类型、捕获、处理(第9天课堂笔记)

    import os """ 通过文件的路径去打开文件 相对路径:相对当前的工作路径去定位文件位置 .:代表当前路径 ..:代表上一级路径(父级路径) 绝对路径:相对于电脑 ...

  8. python基础之open函数和路径处理

    前言 本次内容主要介绍文件处理open函数以及路径处理. 一.open函数 根据前面介绍的函数调用方式,调用open函数. #open函数调用 open() TypeError: open() mis ...

  9. [Python学习]错误篇二:切换当前工作目录时出错——FileNotFoundError: [WinError 3] 系统找不到指定的路径

    REFERENCE:<Head First Python> ID:我的第二篇[Python学习] BIRTHDAY:2019.7.13 EXPERIENCE_SHARING:解决切换当前工 ...

随机推荐

  1. 基于Android平台的图书管理系统的制作(3)

    前两篇介绍了主页面和Student,这一篇来讲Book类和工作人员. Book是图书管理系统的核心,查书,借书,还书,增加书都与Book类息息相关.Book类的设计很简单:包含信息:名称.作者.页数. ...

  2. EVB_Air724UG_A13开发板使用指南

      Air724 是上海合宙物联网于2020年3月下旬发布的一款基于UIS8910DM芯片组的物联网通讯模块. 模块通讯性能优越,符合Cat1通讯标准,支持最大下行速率 10Mbps 和最大上行速率5 ...

  3. Oracle对大表进行delete注意事项

    如果对大表进行大量的delete和update,那么可以注意一下如下说明: (1) 查看执行计划,如果说删除的记录很多,走索引的成本会比全表扫描更大,因为更新数据时还需要做一些约束校验和创建index ...

  4. 聊聊 Feign 的实现原理

    What is Feign? Feign 是⼀个 HTTP 请求的轻量级客户端框架.通过 接口 + 注解的方式发起 HTTP 请求调用,面向接口编程,而不是像 Java 中通过封装 HTTP 请求报文 ...

  5. VsCode中代码折叠快捷键

    ctrl+K  ctrl+[  折叠本级 ctrl+K  ctrl+]  取消折叠本级 ctrl+K  ctrl+0  折叠全部 ctrl+K  ctrl+J  取消折叠全部

  6. JS刷新窗口的几种方式

    浮层内嵌iframe及frame集合窗口,刷新父页面的多种方法   <script language=JavaScript>       parent.location.reload(); ...

  7. layui 修改表格边框颜色

    /*设置不可编辑时字体颜色*/ .layui-disabled, .layui-disabled:hover { color: #101010 !important; background-color ...

  8. __sync_fetch_and_add函数(Redis源码学习)

    __sync_fetch_and_add函数(Redis源码学习) 在学习redis-3.0源码中的sds文件时,看到里面有如下的C代码,之前从未接触过,所以为了全面学习redis源码,追根溯源,学习 ...

  9. 暑假自学java第一天

    今天通过网上的学习资料安装了Java的环境和java的程序开发工具包(JDK) 还安装了eclipse ,英语不太好,所以不太会用这个软件,网上搜了教程,还是出现了问题:unnamed package ...

  10. 如何快速实现一个虚拟 DOM 系统

    虚拟 DOM 是目前主流前端框架的技术核心之一,本文阐述如何实现一个简单的虚拟 DOM 系统. 为什么需要虚拟 DOM? 虚拟 DOM 就是一棵由虚拟节点组成的树,这棵树展现了真实 DOM 的结构.这 ...