python 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[, onerror=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'
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章