首页 > 编程语言 >python os模块 高频函数(未完待续)

python os模块 高频函数(未完待续)

时间:2022-11-15 19:24:20浏览次数:38  
标签:ljk python demo zipfile 未完待续 home path os

os.environ

>>> import os
>>> os.environ
environ({'CLUTTER_IM_MODULE': 'fcitx', 'COLORTERM': 'truecolor', 'DBUS_SESSION_BUS_ADDRESS': 'unix:path=/run/user/1000/bus', 'DESKTOP_SESSION': 'deepin', 'DISPLAY': ':0', 'D_DISABLE_RT_SCREEN_SCALE': '1', 'D_DXCB_FORCE_OVERRIDE_HIDPI': '1', 'GDMSESSION': 'deepin', 'GIO_LAUNCHED_DESKTOP_FILE': '/usr/share/applications/deepin-terminal.desktop', 'VIRTUALENVWRAPPER_WORKON_CD': '1', 'VIRTUALENVWRAPPER_SCRIPT': '/home/ljk/.local/bin/virtualenvwrapper.sh', 'WORKON_HOME': '/home/ljk/.virtualenvs', 'VIRTUALENVWRAPPER_HOOK_DIR': '/home/ljk/.virtualenvs', 'VIRTUAL_ENV': '/home/ljk/.virtualenvs/ymir', 'PS1': '(ymir) %(?:%{\x1b[01;32m%}➜ :%{\x1b[01;31m%}➜ ) %{$fg[cyan]%}%c%{$reset_color%} $(git_prompt_info)', '_': '/home/ljk/.virtualenvs/ymir/bin/python'})
>>> os.environ.get("HOME")
'/home/ljk'
>>> 

os.walk

os.walk() 方法用于通过在目录树中游走输出在目录中的文件名,所有目录,包括嵌套子目录都会被输出文件名。

walk()方法语法格式如下:

os.walk(top[, topdown=True[, one rror=None[, followlinks=False]]])
  • top -- 是你所要遍历的目录的地址, 返回的是一个三元组(root,dirs,files)。
  1. root 所指的是当前正在遍历的这个文件夹的本身的地址
  2. dirs 是一个 list ,内容是该文件夹中所有的目录的名字(不包括子目录)
  3. files 同样是 list , 内容是该文件夹中所有的文件(不包括子目录)
  • topdown --可选,为 True,则优先遍历 top 目录,否则优先遍历 top 的子目录(默认为开启)。如果 topdown 参数为 True,walk 会遍历top文件夹,与top 文件夹中每一个子目录。

  • onerror -- 可选,需要一个 callable 对象,当 walk 需要异常时,会调用。

followlinks -- 可选,如果为 True,则会遍历目录下的快捷方式(linux 下是软连接 symbolic link )实际所指的目录(默认关闭),如果为 False,则优先遍历 top 的子目录。

(ymir) ➜  zip_demo tree .
.
├── gt
│   ├── dd.txt
│   ├── hello.txt
│   └── one.txt
├── images
│   └── two.txt
└── zipfile_demo.py
In [3]: for dirpath, dirnames, filenames in os.walk("."):
   ...:     print(f"{dirpath}---{dirnames}---{filenames}")
   ...: 
.---['images', 'gt']---['zipfile_demo.py']
./images---[]---['two.txt']
./gt---[]---['dd.txt', 'hello.txt', 'one.txt']

os.rename

os.rename() 方法用于命名文件或目录,从 src 到 dst,如果dst是一个存在的目录, 将抛出OSError。

os.rename(src, dst)

参数说明:

  • src -- 要修改的文件或目录名
  • dst -- 修改后的文件或目录名
In [4]: ls
gt/  images/  zipfile_demo.py

In [5]: os.rename("zipfile_demo.py", "zipfile_dst_demo.py")

In [6]: ls
gt/  images/  zipfile_dst_demo.py

os.makedirs()

作用
用来创建多层目录(单层请用os.mkdir)

os.makedirs(name, mode=0o777, exist_ok=False)

参数说明:

  • name:你想创建的目录名
  • mode:要为目录设置的权限数字模式,默认的模式为 0o777 (八进制)。
  • exist_ok:是否在目录存在时触发异常。如果exist_ok为False(默认值),则在目标目录已存在的情况下触发FileExistsError异常;如果exist_ok为True,则在目标目录已存在的情况下不会触发FileExistsError异常。
In [7]: ls
gt/  images/  zipfile_dst_demo.py

In [8]: 

In [8]: os.makedirs("make_dir_test/test", exist_ok=True)

In [9]: ls
gt/  images/  make_dir_test/  zipfile_dst_demo.py

In [10]: ls make_dir_test/test/

In [11]: 

os.path

os.path.basename

返回路径中最后的文件名,path以/或\结尾,那么就会返回空值.

In [14]: path =  '/home/ljk/Desktop/zip_demo/zipfile_demo.py'
In [15]: os.path.basename(path)
Out[15]: 'zipfile_demo.py'

In [16]: path =  '/home/ljk/Desktop/zip_demo/zipfile_demo'
In [17]: os.path.basename(path)
Out[17]: 'zipfile_demo'

# 返回空值
In [18]: path =  '/home/ljk/Desktop/zip_demo/zipfile_demo/'
In [19]: os.path.basename(path)
Out[19]: ''

In [20]: path =  '/home/ljk/Desktop/zip_demo/zipfile_demo.'
In [21]: os.path.basename(path)
Out[21]: 'zipfile_demo.'

os.path.dirname()

返回文件路径,即去掉文件名,返回目录。如果文件只有一层路径,返回空

In [24]: path =  '/home/ljk/Desktop/zip_demo/zipfile_demo.py'
In [25]: os.path.dirname(path)
Out[25]: '/home/ljk/Desktop/zip_demo'

In [26]: path =  'zipfile_demo.py'
In [27]: os.path.dirname(path)
Out[27]: ''

os.path.splitext()

将对应路径的文件名和后缀名分割,注意是路径。分离之后有两部分:路径+后缀

In [26]: path =  'zipfile_demo.py'
In [29]: os.path.splitext(path)
Out[29]: ('zipfile_demo', '.py')

In [30]: path =  '/home/ljk/Desktop/zip_demo/zipfile_demo.py'
In [31]: os.path.splitext(path)
Out[31]: ('/home/ljk/Desktop/zip_demo/zipfile_demo', '.py')

In [32]: path =  '/home/ljk/Desktop/zip_demo/zipfile_demo'
In [33]: os.path.splitext(path)
Out[33]: ('/home/ljk/Desktop/zip_demo/zipfile_demo', '')

os.path.split

安装路径将路径和文件名分割开来。如果路径是以/结尾,则返回的文件名为空

In [34]: path =  '/home/ljk/Desktop/zip_demo/zipfile_demo.py'
In [35]: os.path.split(path)
Out[35]: ('/home/ljk/Desktop/zip_demo', 'zipfile_demo.py')

In [36]: path =  '/home/ljk/Desktop/zip_demo/zipfile_demo'
In [37]: os.path.split(path)
Out[37]: ('/home/ljk/Desktop/zip_demo', 'zipfile_demo')

In [38]: path =  '/home/ljk/Desktop/zip_demo/zipfile_demo/'
In [39]: os.path.split(path)
Out[39]: ('/home/ljk/Desktop/zip_demo/zipfile_demo', '')

os.path.join

对路径中带路径分隔符的处理:

  1. 所有路径中都不带分隔符,默认按照参数顺序,并添加分隔符
In [40]: os.path.join("aa", "bb", "cc")
Out[40]: 'aa/bb/cc'
  1. 存在以分隔符开始的参数,从带分隔符的参数开始拼接,前面的参数丢弃。存在多个分隔符参数,以最后一个开始
In [45]: os.path.join("aa", "/bb", "cc")
Out[45]: '/bb/cc'
  1. 只存在以./开始的参数,按照参数顺序拼接。
In [46]: os.path.join("aa", "./bb", "cc")
Out[46]: 'aa/./bb/cc'

In [48]: os.path.join("00", "aa", "./bb", "cc", "./dd")
Out[48]: '00/aa/./bb/cc/./dd'

标签:ljk,python,demo,zipfile,未完待续,home,path,os
From: https://www.cnblogs.com/goldsunshine/p/16893571.html

相关文章

  • 07python列表
    这篇文章主要介绍列表的一些知识。函数list首先需要说明的是,列表与元组、字符串一样都是一种序列,但不同的是列表是可变的,即可修改其内容。因为不能像修改列表那样修改字......
  • python 线程池 ThreadPoolExecutor
    从Python3.2开始,标准库为我们提供了concurrent.futures模块,它提供了ThreadPoolExecutor(线程池)和ProcessPoolExecutor(进程池)两个类。相比threading等模块,该模......
  • 软件开发架构,架构发展趋势,网络编程前戏,OSI七层协议
    目录软件开发架构,架构发展趋势,网络编程前戏,OSI七层协议今日内容概要今日内容详细软件开发架构架构总结网络编程前戏OSI七层协议简介OSI七层协议之物理连接层OSI七层协议之......
  • 软件开发架构 OSI七层协议
    今日内容软件开发结构规定了程序的请求逻辑、功能模块C/S架构Client:客户端Server:服务端'''我们使用计算机下载的一个个app本质是各大互联网公司的客户端软件通......
  • 软件开发架构、OSI七层协议
    软件开发架构、OSI七层协议目录软件开发架构、OSI七层协议软件开发架构软件开发架构分类架构优劣架构发展趋势网络编程前戏OSI七层协议简介OSI七层协议之物理连接层OSI七......
  • python进阶3-操作excel
    参考:https://www.cnblogs.com/R-bear/p/15025822.html一、python操作excel,python操作excel使用xlrd、xlwt和xlutils模块,xlrd模块是读取excel的,xlwt模块是写excel的,xlutil......
  • 网络编程,osi七层协议
    软件开发架构规定了程序的请求逻辑,功能分开分为两种:1.C/S架构 客户端(Client)类似于我们下载的app,给客户提供软件体验,可以理解成要去消费的客户服务端......
  • windwos cmake与c++的使用教程(2)
    概述本文基于前文环境一个基于cmake的hellocmake本节目标:使用VSCode创建cmake脚本文件,输出hellocmake1准备因为cmake执行过程可能有新的文件生成,所以,这里新......
  • 网络编程:软件开发架构、架构总结、网络编程前戏、OSI七层协议简介、OSI七层协议之物
    目录软件开发架构架构总结网络编程前戏OSI七层协议简介OSI七层协议之物理连接层OSI七层协议之数据链路层网络相关专业名词OSI七层协议之网络层OSI七层协议之传输层软件开......
  • bochs利用中断调试dos程序
    参考:https://blog.csdn.net/ruyanhai/article/details/7199858本文主要内容:在bochs中运行dos程序,如何在程序的开始处中断使用bochs调试,如何在程序的任意位置下断点......