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

一、获取当前路径

  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. 『无为则无心』Python基础 — 12、Python运算符详细介绍

    目录 1.表达式介绍 2.运算符 (1)运算符的分类 (2)算数运算符 (3)赋值运算符 (4)复合赋值运算符 (5)比较运算符 3.逻辑运算符 拓展1:数字之间的逻辑运算 拓展2:Python中逻辑 ...

  2. Java并发之Semaphore源码解析(一)

    Semaphore 前情提要:在学习本章前,需要先了解笔者先前讲解过的ReentrantLock源码解析,ReentrantLock源码解析里介绍的方法有很多是本章的铺垫.下面,我们进入本章正题Sem ...

  3. 什么是DDoS引导程序IP Stresser?

    1.什么是IP Stresser? IP Stresser是一款用于测试网络或服务器稳健性的工具.管理员可以运行压力测试,从而确定现有资源(带宽.CPU 等)是否足以处理附加负载. 测试个人网络或服务 ...

  4. flex发生错误积累。每次遇到错误记录一点点

    error #2044: 未处理的 ioerrorevent: text=error #2036: 加载未完成 出现这个问题,因为我是要实现图片编辑裁剪,然后上传.没有上传成功,出现上面的这个错误, ...

  5. python3 依赖倒置原则示例

    场景 针对园区停车信息,需要对各个公司提供的停车数据进行整合并录入自家公司的大数据平台 数据的录入无外乎就是对数据的增删改查 下面上一个常规的写法(未符合依赖倒置),整合来自 长安和丰田 的停车数据 ...

  6. Android系统编程入门系列之界面Activity绘制展示

    上篇文章介绍了界面Activity的启动方式和生命周期,本篇将继续介绍在界面Activity中的内容是如何绘制展示给用户的. 在Android系统上运行新创建的界面Activtiy,给用户展示的是空白 ...

  7. IDEA中Springboot启动热部署

    在IDEA中开发springboot项目时,每次修改代码后都需要手动重启项目比较麻烦,可以通过添加一定的配置使每次修改代码后项目进行自动重启 在IDEA中开发springboot项目时,每次修改代码后 ...

  8. B站挂了之后出现的tengine是个啥?

    一.描述 晚上刚洗漱完之后听同学说:B站挂了?woc?真挂了? 嗯!确实挂了,404的状态码,懂的都懂. 不过,最下面的tengine字眼吸引了我的注意,一时兴起,打算看看它是个什么东西,起码搞一个h ...

  9. centos安装svn,centos客户端运用svn

    场景:   操作如下: 搭建svn服务器:192.168.43.130 1.安装subversion 2.创建本地仓库 mkdir  /haha/svn/something svnadmin  cre ...

  10. WPF教程四:字段、属性、依赖项属性的演变过程

    这个章节主要讲解属性是什么,为什么会演变出依赖项属性,依赖属性的优势是什么.以及如何更好的使用属性和依赖项属性. 一.属性 属性是什么. 翻了好几本C#的书和微软的文档,我觉得对属性讲解比较好理解的就 ...