二十七、深入淺出Python中的os模塊

2021-03-02 Python入門到精通

「@Author:Runsen」

當初學Python的時候,把一些標準庫和第三方開源庫學的七零八落,不成系統,正好趁這個機會來系統的整理一下,先從Python常用的標準庫os開始吧。

os

OS模塊簡單的來說它是一個Python的系統編程的操作模塊,可以處理文件和目錄這些我們日常手動需要做的 操作。可以查看OS模塊的幫助文檔。

import os #導入os模塊  
help(os)   #查看os模塊幫助文檔,裡面詳細的模塊相關函數和使用方法

獲取當前系統

首先我們需要先導入os模塊:直接列印os.name。

import os
print(os.name)

#若是Windows則輸出'nt',若是Linux/Unix,則是'posix'

獲取當前文件的絕對路徑
# 獲取當前文件的絕對路徑 桌面上的demo.py
absolute_file_path = os.path.abspath(__file__)
print(absolute_file_path)

列印結果:C:\Users\YIUYE\Desktop\demo.py

獲取當前目錄

函數os.getcwd():功能:獲取當前目錄,python的工作目錄。

cwd = os.getcwd()
print(cwd

列印結果:C:\Users\YIUYE\Desktop

判斷文件是否存在,返回值為布爾型
import os
file_path = r"C:\Users\YIUYE\Desktop\demo.py"
has_file = os.path.exists(file_path)
print("file path: [{}] is exist: {}".format(file_path, has_file))

file path: [C:\Users\YIUYE\Desktop\demo.py] is exist: True

獲取文件的名稱
import os
# 獲取文件的名稱
file_name = os.path.basename(__file__)
print(file_name)

列印結果:demo.py

文件重命名

old_file = r"C:\Users\YIUYE\Desktop\demo.py"
# 或者old_file = "C:/Users/YIUYE/Desktop/demo.py"  前面沒有r
new_file = r"C:\Users\YIUYE\Desktop\demo1.py"
# 重命名文件
os.rename(old_file, new_file)

注意點:Unix使用斜杆/ 作為路徑分隔符,而web應用最新使用在Unix系統上面,所以目前所有的網絡地址都採用 斜杆/作為分隔符。

Windows由於使用 斜杆/ 作為DOS命令提示符的參數標誌了,為了不混淆,所以採用 反斜槓\ 作為路徑分隔符。所以目前windows系統上的文件瀏覽器都是用 反斜槓\ 作為路徑分隔符。

隨著發展,DOS系統已經被淘汰了,命令提示符也用的很少,很多時候斜杆和反斜槓在大多數情況下可以互換,沒有影響。

記住:

出現在html url() 屬性中的路徑,指定的路徑是網絡路徑,所以必須用 斜杆/ ;

出現在普通字符串中的路徑,如果代表的是windows文件路徑,則使用 反斜槓\ 需要在前面加r;如果代表的是網絡文件路徑,則必須使用 斜杆/。

具體報錯和指示如下圖。

如果是Mac沒有反斜槓\,和Linux一樣都是只有斜杆/

創建文件夾

os.makedirs創建多級目錄

# 路徑中的多個文件夾都不存在時,可以遞歸創建,code和code1文件夾本身沒有
forders_path = r"C:\Users\YIUYE\Desktop\code\code1"
os.makedirs(forders_path)

os.path.mkdir:只能創建一個文件夾, code文件夾存在,才能創建code1文件夾,如果code文件夾不存在,則會出錯。

forder_path = r"C:\Users\YIUYE\Desktop\code\code1"
os.mkdir(forder_path)

獲取文件夾下的所有文件名
forder_path = r"D:\學習資料"
# 獲取文件夾code下的所有文件名,以列表的形式返回
file_names = os.listdir(forder_path)
print(file_names)

獲取文件夾下的所有文件夾和文件(無遞歸遍歷)
print(os.scandir(r"D:\學習資料"))

列印結果:<nt.ScandirIterator object at 0x0000027EEAC6EE30>

返回的是可迭代對象,我們用for循環迭代一下遍出結果,這裡進行判斷,尋找文件,而不是文件夾

for f in os.scandir(r"D:\學習資料"):
   if not f.is_file(): #is_file判斷是否是文件 not f.is_file表示不是文件
       print('yes',f)
   else:
       print('no:', f)

將path分割成路徑名和文件名

os.path.split函數返回一個路徑的目錄名和文件名

print(os.path.split(r"C:\Users\YIUYE\Desktop\demo.py"))
print(os.path.split(r"C:\Users\YIUYE\Desktop\demo.py")[0])
print(os.path.split(r"C:\Users\YIUYE\Desktop\demo.py")[1])


列印結果:('C:\\Users\\YIUYE\\Desktop', 'demo.py')
C:\Users\YIUYE\Desktop
demo.py

拼接目錄與文件名或目錄

os.path.join函數拼接目錄與文件名或目錄

print(os.path.join('I', 'am', 'Runsen'))

列印結果:I\am\Runsen

練習

「創建一個函數,獲取文件夾下包含子文件夾的所有文件路徑,並且存入list輸出?」

最簡單的方法使用os.walk

os.walk()用類似於深度遍歷的方式遍歷文件夾中的子文件夾以及文件。

import os
def get_Listfiles(path):
    Filelist = []
    # os.walk()用類似於深度遍歷的方式遍歷文件夾中的子文件夾以及文件。
    # 最基本的顯示方式為(root_path,[file_dirs],[files]),
    for home, dirs, files in os.walk(path):
        for file in files:
            Filelist.append(os.path.join(home, file))
            #Filelist.append(file)
    return Filelist
print(get_Listfiles(r"D:\Python"))

具體運行結果如下圖。


Reference[1]

傳送門~: https://github.com/MaoliRUNsen/runsenlearnpy100

相關焦點

  • Python os 模塊
    引言眾所周知,python是一種強大的腳本語言,那麼,問題來了,為什麼不用python來編寫Linux腳本呢?
  • 深入淺出Python中的logging模塊
    簡說Python推薦來源:Python之王  作者:小senOne old watch, like brief python 大家好,我是老表~logging模塊是Python內置的標準模塊軟體開發人員可以向他們的代碼中調用日誌記錄相關的方法來表明發生了某些事情。一個事件可以用一個可包含可選變量數據的消息來描述。此外,事件也有重要性的概念,這個重要性也可以被稱為嚴重性級(level)。
  • Python內置模塊之OS
    今天分享下python內置模塊中的OS模塊,os模塊是大家經常會使用到的,雖然有path這個模塊替代os, 但是大家可能還是比較熟悉os吧,那麼我自己也總結下os模塊中常用的一些方法和屬性。當前平臺的路徑分隔符,windown是\,linux是'/'os.altsep可替代的路徑分隔符,window中為/.os.extsep文件名和文件拓展名之間分隔符的符號,windown為.os.pathsepPATH環境變量中的分隔符,window為; linux為:os.linesep行結束符,windows為\r\n, linux為\nos.devnullwindow為nul,linux為/dev
  • Python OS模塊簡介
    在本教程中,我們將學習怎樣使用Python中的os模塊。
  • Python內置模塊os介紹
    # 內置模塊# Python語言強大的地方就在於它擁有非常強大的模塊系統# 使用只需要用 import 導入即可
  • Python os模塊 常用的功能介紹
    Python os 模塊提供了非常豐富的方法用來處理文件和目錄。使用者不需要關注什麼作業系統就可以對文件進行操作。
  • 【python】os 模塊使用筆記
    Python內置的os模塊可以調用作業系統提供的接口函數,對文件或目錄進行操作(實際上作業系統是不允許應用程式直接訪問和操作文件和目錄的,讀寫文件就是請求作業系統打開一個文件對象,通常稱為文件描述符。然後,通過作業系統提供的接口從這個文件對象中讀取數據,或者把數據寫入這個文件對象。)os模塊一般有以下功能:
  • Python辦公自動化:OS模塊的常見用法
    ('dirname')列出指定目錄的文件os.scandir()和listdir相近的功能,列出指定目錄的文件 Python 官方推薦os.getcwd()取得當前工作目錄os.chmod()改變目錄權限os.path.basename(『path/filename』)去掉目錄路徑,返回文件名os.path.dirname(『path/filename』)去掉文件名,返回目錄路徑os.path.join
  • 二十八、深入淺出Python中的logging模塊
    模塊是Python內置的標準模塊,主要用於輸出腳本運行日誌,可以設置輸出日誌的等級、日誌保存路徑等。軟體開發人員可以向他們的代碼中調用日誌記錄相關的方法來表明發生了某些事情。一個事件可以用一個可包含可選變量數據的消息來描述。此外,事件也有重要性的概念,這個重要性也可以被稱為嚴重性級(level)。
  • Python常用模塊os和shutil學習
    os就是「operating system」的縮寫,python中的os模塊提供了對目錄或者文件的新建/刪除/查看等屬性,還提供了對文件以及目錄的路徑操作,比如創建、刪除目錄等。關於OS模塊的目錄操作,可以看一下這篇文章:Python目錄操作總結下面是os模塊常用方法思維導圖shutil模塊shutil模塊屬於高級文件操作模塊,可以做os模塊的補充,主要可以實現文件的複製和解壓縮操作等等。
  • Python|模塊os
    Python語言中有很多經常用到的標準包,提到包,我們就不得不聯想到模塊。模塊和包有啥區別呢?
  • python---os模塊使用詳解
    os模塊調用作業系統接口的模塊  相關方法或屬性:    getcwd()
  • 盤點Python中os模塊的那些用法
    今天給大家分享Python基礎之os模塊。一、os模塊概述Python os模塊包含普遍的作業系統功能。二、os模塊的作用可以處理文件和目錄這些我們日常手動需要做的操作。如果你希望你的程序能夠與平臺無關的話,這個模塊是尤為重要的。三、常用方法1. os.name輸出字符串指示正在使用的平臺。如果是window 則用'nt'表示,對於Linux/Unix用戶,它是'posix'。
  • 【Python入門】Python之OS模塊39個常用函數詳解
    os,語義作業系統,所以該模塊就是作業系統相關的功能了,用於處理文件和目錄這些我們日常手動需要做的操作,比如新建文件夾、獲取文件列表、刪除某個文件、獲取文件大小、重命名文件、獲取文件修改時間等,該模塊就包含了大量的作業系統操作函數,精選常用的進行解析,希望對大家有所幫助。
  • Python之OS模塊39個常用函數詳解
    OS,語義作業系統,所以該模塊就是作業系統相關的功能了,用於處理文件和目錄這些我們日常手動需要做的操作,比如新建文件夾、獲取文件列表、刪除某個文件、獲取文件大小、重命名文件、獲取文件修改時間等,該模塊就包含了大量的作業系統操作函數,精選常用的進行解析,希望對大家有所幫助。
  • Python 中的 Subprocess 模塊
    翻譯丨寫樂原文丨pythonforbeginners以前我一直用os.system()處理一些系統管理任務
  • python:os.path模塊(常用路徑操作)
    os.path.abspath(path)import os.path as spprint(sp.abspath(__file__))/Users/lifeng/python-projects/Test/pythonScripts/pythonLibrary/
  • Python基礎之模塊之os模塊
    os.getcwd()      #顯示當前python腳本工作路徑os.linesep 輸出當前平臺使用的行終止符,win下為"\t\n",Linux下為"\n"os.pardir 獲取當前目錄的父目錄字符串名:('..')
  • Python3_模塊(一)
    為此 Python提供了一個辦法,把這些定義存放在文件中,為一些腳本或者交互式的解釋器實例使用,這個文件被稱為模塊。模塊是一個包含所有你定義的函數和變量的文件,其後綴名是.py。模塊可以被別的程序引入,以使用該模塊中的函數等功能。這也是使用 python標準庫的方法。簡單的來說,模塊,是用一段代碼實現了某個功能的代碼集合,本質上是一個py文件。
  • Python模塊 | 這份os模塊知識詳解,太牛逼!
    本文大綱 os模塊是Python標準庫中整理文件和目錄最為常用的模塊,該模塊提供了非常豐富的方法用來處理文件和目錄