【python基礎】os模組的使用

最愛吃大米發表於2020-12-16

os簡介

os 模組是關於作業系統操作呼叫的相關模組,對檔案進行重新命名、刪除等一系列操作,在python中可以用os模組

os模組提供了一些系統級別的操作

官網api

相對路徑與絕對路徑

==絕對路徑:==是指檔案在硬碟上真正存在的路徑。那麼如果要使用絕對路徑指定網頁的背景圖片就應該使用 以下語句:

/Users/liuhuanhuan/PycharmProjects/blog/os模組操作/os.md

注: Mac os /linux 中可直接使用pwd檢視當前檔案的絕對路徑

相對路徑,就是相對於自己的目標檔案位置。

在同一個目錄: (blog為專案的主目錄)

在其所在目錄的子目錄裡: <os模組操作> (此目錄為blog的二級目錄)

在其所在目錄的上級目錄裡: <…/os.md> (在相對路徑裡常使用“…/”來表示上一級目錄。如果有多個上一級目錄,可以使用多個“…/”.)

在其所在目錄的上級目錄裡的os子目錄裡:<./os/os.md>

常見函式

1. getcwd()

作用:返回當前工作目錄

import os
print(os.getcwd())

2. rename(old, new)

作用:修改檔名稱

注: old 的目錄必須是存在的,否則報錯

import os
os.rename('1.py','2.py')

3. remove(filename)

作用:刪除指定的檔案,如果 path 是目錄則會丟擲 OSError

import os
os.remove('3.py')

4. mkdir(name)

作用:建立單級目錄

import os
os.mkdir('gl')
os.mkdir("/Users/lhh/Downloads/idea")

5. rmdir(filename)

作用:刪除單級目錄

注:若存在子目錄,則無法刪除,必須為空且存在

import os
s.rmdir('gl')
os.rmdir("/Users/lhh/Downloads/idea")  #刪除失敗。只能刪除目錄檔案下面是空的
# 如果要刪除非空目錄的話,就需要呼叫shutil模組
import shutil
shutil.rmtree("/Users/lhh/Downloads/idea")  #成功刪除非空的資料夾

6.chdir(filename)

作用:改變當前檔案的工作目錄

import os
os.chdir('../')

7.listdir(filename)

作用:返回當前目錄下所有檔案和資料夾,注意 path 是目錄路徑

import os
# 初始寫法
file_list = os.listdir("dname")
for name in file_list:
  #列印列表的名稱
	print(name)   
  
#新寫法
#使用with自動的去釋放資源
with os.scandir("/Users/liuhuanhuan/") as entries:  
         for entry in entries:
            print(entry.name)
            pass

Demo

#示範:檢視一個資料夾下所有的檔案
basePath = "/Users/liuhuanhuan/"
for entry in os.listdir(basePath):    
  # if os.path.isfile(os.path.join(basePath,entry)):   #只顯示是檔案的目錄檔名稱
#     #     print(entry)
    if os.path.isdir(os.path.join(basePath,entry)):   #只顯示是資料夾的目錄名稱
        print(entry)
        pass

8.path.join(filename1,filename2…)

作用:檔案路徑地址拼接

import os
path = os.path.join(os.getcwd(),'gl')

9.makedirs(filename)

作用:遞迴建立目錄,只是目錄,檔案無法建立

filename 只有最後一層資料夾不存在,前幾級必須是已存在的目錄,否則建立失敗

import os
os.makedirs("/Users/lhh/Downloads/idea/l/h/h/w/c/y/wo/ai/ni")  #允許建立多級目錄

10.write(path, str)

作用:將 bytes 字串 str 寫入 path 所指的檔案

import os
os.write('/Users/lhh/Downloads/a.txt','miss you')

11.chmod(filename)

作用:改變檔案的許可權

import os
os.chmod('/Users/lhh/Downloads/a.txt')

13.pardir

作用:指代上一級當前目錄

import os
print(os.pardir)

14.name

作用:指代當前使用的 作業系統(包括‘java’,'mac’等)

import os
print(os.name)

15.linesep

作用:當前平臺使用的行終止符(win下為‘\r\n’,linux下為‘\n’)

import os
print(os.linesep)

以上均為常使用的方法:

附錄:

os方法大全

os.path模組

os.path.isdir(‘name’) 判斷是否為目錄 返回bool

os.path.isfile(‘name’) 判斷是否為檔案 返回bool

os.path.islink(‘name’)判斷是否為連結 返回bool

os.path.getsize(‘name’) 返回檔案大小,如果檔案不存在 返回錯誤

os.path.abspath(‘file_name’) 返回的是file_那麼的絕對路徑

os.path.split(‘file_path’) 返回file_path分割成目錄和檔名,以元組方式返回

os.path.exists(‘file_path’) 如果file_path存在 返回True 反之返回False

os.path.join(‘file_path’,’file_name’) 連線目錄和檔名或者目錄

os.path.isabs() 判斷是否是絕對路徑

os.path.exists() 檢驗給出的路徑是否真地存

os.path.splitext() 分離副檔名

os.path.dirname() 獲取路徑名
os.path.basename() 獲取檔名
os.system() 執行shell命令
os.getenv() 與os.putenv() 讀取和設定環境變數
os.stat(file) 獲取檔案屬性
os.exit() 終止當前程式
os.path.getsize(filename)獲取檔案大小

import time 模組

Time.ctime() 返回本地時間

os.path.getatime() 檔案或者目錄最後訪問的時間

os.path.getmtime() 最後修改的時間

os.path.getctime() 建立時間

程式碼綜合實操:

#coding=utf-8 
import  re
import  os
import  time
#str.split(string)分割字串
#'連線符'.join(list) 將列表組成字串
def  change_name(path):
     if  not  os.path.isdir(path)  and  not  os.path.isfile(path):
         return  False
     if  os.path.isfile(path):
         file_path  =  os.path.split(path)  #分割出目錄與檔案
         lists  =  file_path[1].split( '.' )  #分割出檔案與副檔名
         file_ext  =  lists[ - 1 ]  #取出字尾名(列表切片操作)
         img_ext  =  [ 'bmp' , 'jpeg' , 'gif' , 'psd' , 'png' , 'jpg' ]
         if  file_ext  in  img_ext:
             os.rename(path,file_path[ 0 ] + '/' + lists[ 0 ] + '_fc.' + file_ext)
             i + = 1  #注意這裡的i是一個陷阱
         #或者
         #img_ext = 'bmp|jpeg|gif|psd|png|jpg'
         #if file_ext in img_ext:
         #    print('ok---'+file_ext)
     elif  os.path.isdir(path):
         for  x  in  os.listdir(path):
             change_name(os.path.join(path,x))  #os.path.join()在路徑處理上很有用
  
img_dir  =  'D:\\xx\\xx\\images'
img_dir  =  img_dir.replace( '\\',' / ')
start  =  time.time()
i  =  0
change_name(img_dir)
c  =  time.time()  -  start
print ( '程式執行耗時:%0.2f' % (c))
print ( '總共處理了 %s 張圖片' % (i))

相關文章