【python】OS模塊的用法及python換行符問題

個人簡介

      作者簡介:大傢好,我是姐姐劃船嗎?運維領域創作者,阿裡雲ACE認證高級工程師
      ✒️個人主頁:姐姐劃船嗎?
      支持我:點贊+收藏⭐️+留言
      格言:你未必出類拔萃,但一定與眾不同!

系列專欄:
                 階段一:windows基礎
                 階段二:Linux基礎知識
                 階段三:shell基礎+shell高級
                 階段四:學會python,逆天改命
                 階段五:Linux網絡服務
                 階段六:集群原理及架構
                 階段七:雲計算虛擬化技術

學習目標:

        ✏️   瞭解  os 模塊對文件操作

        ✏️   瞭解 OS 對文件夾的相關操作:

        ✏️   瞭解批量創建文件和修改文件

        ✏️   瞭解Python 換行符問題

目錄

1、python中的os 模塊

1.1使用 os 模塊對文件操作

1.1.1使用 os 模塊對文件重命名 rename()

1.1.2使用 os 模塊對刪除文件 remove()

1.2使用 OS 對文件夾的相關操作:

1.2.1創建文件夾

1.2.2創建多層目錄

1.2.3獲取當前目錄

1.2.4改變默認目錄

1.2.5獲取目錄列表,包含文件和目錄

1.2.6刪除文件夾

1.3批量創建

1.4批量修改文件名

2.Python 換行符問題

2.1Python 換行符問題:

2.2python中對於長句子換行的問題

結束語


1、python中的os 模塊 1.1使用 os 模塊對文件操作

有些時候,需要對文件進行重命名、刪除等一些操作,Python 的 os 模塊中都有這麼功能

1.1.1使用 os 模塊對文件重命名 rename()

rename(需要修改的文件名, 新的文件名)

import os

os.rename(” 程序猿自身修養.txt”, ” 程序員自身修養.txt”)

概述

os.rename() 方法用於命名文件或目錄,從 src 到 dst,如果dst是一個存在的目錄, 將拋出OSError。

語法

rename()方法語法格式如下:

os.rename(src, dst)

參數

  • src — 要修改的目錄名

  • dst — 修改後的目錄名

返回值

該方法沒有返回值

實例

以下實例演示瞭 rename() 方法的使用:

#!/usr/bin/python# -*- coding: UTF-8 -*-import os, sys# 列出目錄print "目錄為: %s"%os.listdir(os.getcwd())# 重命名os.rename("test","test2")print "重命名成功。"# 列出重命名後的目錄print "目錄為: %s" %os.listdir(os.getcwd())

執行以上程序輸出結果為:

目錄為:

[ ‘a1.txt’,’resume.doc’,’a3.py’,’test’ ]

重命名成功

[ ‘a1.txt’,’resume.doc’,’a3.py’,’test2′ ]

1.1.2使用 os 模塊對刪除文件 remove()

remove(待刪除的文件名)

import os

os.remove(” 程序員自身修養.txt”)

概述

os.remove() 方法用於刪除指定路徑的文件。如果指定的路徑是一個目錄,將拋出OSError。

在Unix, Windows中有效

語法

remove()方法語法格式如下:

os.remove(path)

參數

  • path — 要移除的文件路徑

返回值

該方法沒有返回值

實例

以下實例演示瞭 remove() 方法的使用:

#!/usr/bin/python# -*- coding: UTF-8 -*-import os, sys# 列出目錄print "目錄為: %s" %os.listdir(os.getcwd())# 移除os.remove("aa.txt")# 移除後列出目錄print "移除後 : %s" %os.listdir(os.getcwd())

執行以上程序輸出結果為:

目錄為:

[ ‘a1.txt’,’aa.txt’,’resume.doc’ ]

移除後 :

[ ‘a1.txt’,’resume.doc’ ]

1.2使用 OS 對文件夾的相關操作: 1.2.1創建文件夾

不能創建./張三/test/hehe

import os

os.mkdir(” 張三”)

1.2.2創建多層目錄

import os

os.makedirs(” 張三/ 李四/ 王二”)

1.2.3獲取當前目錄

import os

os.getcwd()

1.2.4改變默認目錄

進入到某個目錄,或者是切換目錄

import os

os.chdir(“./../”)

1.2.5獲取目錄列表,包含文件和目錄

import os

print(os.listdir(“./”))

1.2.6刪除文件夾

刪除目錄 path,要求 path 必須是個空目錄,否則拋出 OSError 錯誤

import os

os.rmdir(” 張三”)

刪除不為空的目錄

import shutil

shutil.rmtree(“aa”)

1.3批量創建

import os

os.mkdir(“./test”)

os.chdir(“./test”)

print(os.getcwd())

i = 1

while i<=10:

    open(“人民的名義-%d.avi”%i,”w”)

    i+=1

print(“創建完畢”)

1.4批量修改文件名

import os

os.chdir(“./test”)

i = 1

while i<=10:

    os.rename(“人民的名義-%d.avi”%i,”[宏福出品]-人民的名義-%d.avi”%i)

    i+=1

import os

#得到要批量修改的目錄名

folder = input(“請輸入您要批量修改的文件目錄名稱:”)

os.chdir(folder)

#得到文件夾下所有文件名

fileNames = os.listdir()

#遍歷文件夾下所有文件並修改名稱

for fileName in fileNames:

    print(fileName)

    #新名字

    newFileName = “[宏福出品]-“+fileName

    os.rename(fileName,newFileName)

print(“重命名後的文件:”)

for fileName in os.listdir():

    print(fileName)

2.Python 換行符問題 2.1Python 換行符問題:

先知道結果:

在 linux 和 mac 系統上我們讀寫文本文件使用二進制方式或者文本方式都可以,因為在處理\n 都是一樣的;那麼讀寫文本文件和二進制文件的時候,可以使用 r 和 w 模式或者 rb 和 wb 模式。

在 window 中的換行是\r\n,當我們使用程序以文本方式寫入一個\n 的時候,默認會幫我們加上\r,這樣打開文件的時候才能得到換行的效果;

所有在 window 上讀寫文本文件的時候, 建議使用 r 或者 w 模式。

在讀寫二進制文件的時候,建議用 rb 和 wb 模式。

不同操作系統換行符是不一樣的

在處理文本數據的時候體現在不同操作系統處理\r\n 是不一樣的

不同操作系統 換行符是不一樣的

linux –>\n

unix–>\n

mac–> 老版本(\r)–>\n

windows –>\r\n

對應換行符 windows 遇到\r\n 才換行顯示

2.2python中對於長句子換行的問題

首先明確兩個概念,物理行和邏輯行。

物理行

物理行是指語句在文本編輯中的一行

邏輯行

邏輯行則是python語句在python編譯器裡的一行。所以有些很長的語句,為瞭方便閱讀,我們可以把它放到不同的物理行中。但是python在特定情況仍然會把不同物理行當作一個邏輯行,在這種python的編譯器會自動將物理行中的換行符去掉。一般情況下,在[],(),{}中的不同物理行都會被當成一個邏輯行看待。例如:

a = [1,2,3,4,5]print(a)[1, 2, 3, 4, 5]a = [1,2,    3,4,5] # 這個是 [] 內部的換行編譯器自動處理為一個邏輯行print(a)[1, 2, 3, 4, 5]

甚至可以在括號內加註釋,例如:

a = (1,#註釋可以放在這    2,    3)print(a)(1, 2, 3)a = {'key1':1, # 這是一個{} 的例子    'key2':2}print(a){'key1': 1, 'key2': 2}a = {'key1'# 也可以這樣用     :1,    'key2':2}print(a){'key1': 1, 'key2': 2}

函數的參數由於是在()之內,所以也可以這樣操作

def my_fun(a, #函數也可以這樣斷行           b,c):    print(a,b,c)my_fun(10,20,30)my_fun(10,# 也可以這樣調用      20,      30)10 20 3010 20 30

但是如果在非括號中,則需要用 \ 當作轉義符,例如:

a = 20b = 30c = 40if a>5 and b>10 and c>20:    print('a={},b={},c={}'.format(a,b,c))# 也可以這樣寫if a>5 \and b>10 \    and c>20: #註意,這裡 \ 後的縮進並不重要,因為編譯器把這多個物理行當成一個邏輯行瞭    print('a={},b={},c={}'.format(a,b,c))a=20,b=30,c=40a=20,b=30,c=40

對於字符串,如果用三個單引號,或者三個雙引號包括的字符串,那麼中間的所以換行符都會保留,例如:

a = '''this is a string'''a'this is a string'print(a)this is a stringa = '''this isa string''' # 這裡 is後邊的換行符將被保留a # 註意is 後邊的換行符\n'this is\na string'print(a) # 打印出來的話,註意是兩行this isa string

如果不想保留換行符,需要用單引號”,但是需要轉義符 \,如下:

a = 'this is \a string'a # 註意a中沒有換行符'this is a string'print(a) # a中沒有換行符this is a string

如果需要在字符串中包含 \,則需要用 \\。

a = 'this is a \\ string' #用 \\ 來表示\a # 這時候看到兩個 \ (\\),但是不要慌,因為print出來就對瞭'this is a \\ string'print(a) # print a之後,隻有一個 \this is a string

結束語

  喜歡的請來個三連支持一下吧,謝謝謝謝!!!

您的支持是我最大的動力!!!

本文來自網絡,不代表程式碼花園立場,如有侵權,請聯系管理員。https://www.codegarden.cn/article/28051/
返回顶部