L1.4 os模塊基礎應用

os包:IOS macOS,operate system 操作系統。主要負責新建文件、改文件名、路徑、操作電腦系統相關的功能。
是一個內置包。os包實質調用的是windows上的編程接口。

import os 
from os import path

* 1> os.path.existe		判斷是否存在文件
print(os.path.exists('xx.py'))        True
print(os.path.exists('xx.txt'))		False
* 2>  rename   重命名
os.rename('aaa.txt', 'bbb.txt')
* 3> 刪除文件
os.remove('bbb.txt')
* 4> 創建文件夾  make directory
os.mkdir('aaa')
* 5> 列出當前文件夾下的文件,相當於cmd中dir命令、Linux Is
os.listdir()
* 6> 切換當前文件夾 change,相當於cmd中的cd命令
os.chdir('aaa')
#在cmd中嘗試dir、cd命令
* 7> 獲取當前工作目錄路徑  get work directory
print(os.getcwd())
** 7> 獲取當前文件所在文件夾。與os.getcwd()不一樣的地方,getcwd會受os.chdir()。os.path.dirname只返回當前文件的所在目錄,路徑分隔用的正斜槓。__file__表示文件自身。
print(os.path.dirname(__file__))

* 8> (常用)拼接路徑,獲取腳本的絕對路徑
os.path.join('D://aaa', 'bbb')       # D://aaa/bbb
print(os.path.join(os.getcwd(), '3os.py'))
print(os.path.join(os.path.dirname(__file__), '3os.py'))
* 9> 獲取返回絕對路徑      absolute
print(os.path.abspath('./1包引用.py'))
os.path.abspath(os.path.join(os.getcwd(), '3os.py'))
* 10> 判斷是否路徑      isdir
print(os.path.isdir('aaa'))

1. makedirs() 函數可以用於創建多層目錄
os.makedirs(r'.a\b\c')
2. removedirs()  用於刪除多層目錄
os.removedirs(r'a\b\c')

os模塊
getcwd()返回當前文件所在文件夾的絕對路
os.path.abspath():返回自身所在路徑的絕對路徑
os.path.basename:取路徑的最後一部分
os.path.dirname():返回當前文件/文件夾所在的父級文件夾
os.path.isfile():判斷是否爲文件
os.path.isdir():判斷是否爲文件夾
os.path.join():拼接路徑 mkdir()創建文件夾 chdir()切換文件夾
os.path.exists():判斷路徑下的文件/文件夾是否存在
os.path.pardir:返回當前文件或者文件夾所在的父級目錄


getatime(), getctime(), getmtime()分別用於獲得文件的最近訪問時間、創建時間和修改時間。不過返回的值是浮點型秒數,可用time模塊的gmtime()或localtime()函數換算。

import time, os

temp = time.localtime(os.path.getatime("D:\python\個人練習\新建文本文檔.txt"))
print('文檔 被訪問的時間是:', time.strftime("%d-%b-%Y %H:%M:%S", temp))
temp = time.localtime(os.path.getctime("D:\python\個人練習\新建文本文檔.txt"))
print('文檔  被創建的時間是:', time.strftime("%d-%b-%Y %H:%M:%S", temp))
temp = time.localtime(os.path.getmtime("D:\python\個人練習\新建文本文檔.txt"))
print('文檔  被修改的時間是:', time.strftime("%d-%b-%Y %H:%M:%S", temp))

那麼該程序返回的結果爲:
文檔  被訪問的時間是: 26-Dec-2018 21:12:50
文檔  被創建的時間是: 26-Dec-2018 21:12:50
文檔  被修改的時間是: 17-Dec-2018 09:41:43

絕對路徑和相對路徑(針對資源管理器路徑)
絕對路徑:從盤符或項目根目錄寫出每一層目錄層級到文件。
D:\python\L8 包\03 os.py
優點:準確,缺點:寫起來麻煩

相對路徑:.當前目錄 …表示父目錄
./1包引用.py
…/L7本地文件讀寫/xx.py
L8包/1包引用.py
相對路徑的優點寫起來比較短,整個文件夾路徑變化時裏面的文件路徑不用修改。
缺點:容易寫錯、沒有絕對路徑準確。

表示目錄層級斜槓:windows上 | 反斜槓,macOs linux 用的是/ 正斜槓。
python解釋器會把字符串中的反斜槓認爲是轉移字符,導致出錯。
解決方案:

  1. 反斜槓變成正斜槓 ‘D:/python/L8 包/03 os.py
  2. 使用轉義字符輸出反斜槓 ‘D:\\python\\L8 包\\03 os.py
* 練習:使用絕對路徑打開L7/chinese_utf-8.txt
import os
with open('D:\python 14 期\L7 本地文件讀寫\chinese_utf-8.txt', 'r', encoding="utf-8") as f:
    content = f.read()
    print(content)
* 批量重命名
import os

# 1.獲取要重命名得到文件夾名字
folder_name = input("請輸入要重命名的文件夾:")
# 2 獲取指定的文件夾中的所有文件名字
file_names = os.listdir(folder_name)
os.chdir(folder_name)
# 3 重命名
n = 1
for name in file_names:
	print(name)
	os.rename(name, "文件"+str(n) +name)
	n = n + 1 

概述:
os.walk() 方法用於通過在目錄樹中游走輸出在目錄中的文件名,向上或者向下。

os.walk() 方法是一個簡單易用的文件、目錄遍歷器,可以幫助我們高效的處理文件、目錄方面的事情。

在Unix,Windows中有效。
參數
top – 是你所要遍歷的目錄的地址, 返回的是一個三元組(root,dirs,files)。

  • root 所指的是當前正在遍歷的這個文件夾的本身的地址
  • dirs 是一個 list ,內容是該文件夾中所有的目錄的名字(不包括子目錄)
  • files 同樣是 list , 內容是該文件夾中所有的文件(不包括子目錄)
import os
for root, dirs, files in os.walk(".", topdown=False):
   for name in files:
       print(os.path.join(root, name))
   for name in dirs:
       print(os.path.join(root, name))

dirs效果:
.\package\pack1_pycache_
.\package\pack1
.\package\pack2
files效果:
.\package\pack1_pycache_\py1.cpython-36.pyc
.\package\pack1_pycache__init_.cpython-36.pyc
.\package\pack1\py1.py
.\package\pack1\py2.py

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章