Python之文件操作及常用函數


常見全局函數:

1.dir(nameStr):

常見系統變量:

1.sys.path:一個包含Python自動搜索文件的路徑或目錄的列表。可使用列表的操作方法修改、增加默認搜索路徑。

一、模塊

  1.創建模塊:創建一個擴展名為.py的文件就相當於創建了一個模塊,文件名即為模塊名,文件中的內容即為模塊所包含的內容。

  2.導入模塊:import 模塊名

  3.使用模塊:模塊名.變量名(可為普通變量或函數或類等)

  4.導入模塊中的某個元素:from 模塊名 import  變量。(可多級導入)

  5.導入模塊中的所有元素:from 模塊名 import *

注:2和4、5的區別:使用2方式時,引用模塊中的元素需要使用“模塊名.變量名”的形式,而4、5可直接使用變量名。

二、包

  1.創建包:

    (1)新建一個文件夾,文件夾名即為包名

    (2)在文件夾(包)中創建一個__init__.py文件。(這一步是必須的,不然構不成一個包,注意:init前后各兩個下划線)

    (3)在文件夾中添加想包含在包中的模塊。

    (4)在__init__.py中導入這些模塊或模塊中的元素。

  2.導入包:import 包名。

  3.使用包:同模塊使用方法一樣。

  4.from 包名 import *的使用:

三、文件操作

  1.常用全局內置函數(直接可用的函數,無需引用其他模塊)

    (1)open(file,op):打開指定文件file,若文件不存在則創建。其中file為文件名,file的路徑默認為程序所在的位置,也可指定file的路徑。

      參數op:(1)“r”或無:若省略參數op,則只是簡單打開文件,若文件不存在則會報錯,寫文件操作也會報錯;

          (2)“w”:打開並可寫文件。若文件已存在,則以前的內容將被清除。

          (3)“a”:向文件中追加文本。向已存在的文件中追加內容。

                                        如沒有參數“w”則只是簡單打開文件,如文件不存在則會報錯。    如:a = open("test.txt","w"),a為test.txt的一個文件對象

    注:使用open函數打開並寫文件時文件時,就算文件存在,Python也會先刪除原有文件然后創建新文件,也即文件的內容也隨之刪除!

  2.文件操作函數(需要指定文件對象)

    (1)write(astring):向文件中寫內容,寫入的內容不會自動換行,但可使用換行符“\n”。如:a.write("one line"),此時文件test.txt中出現內容“one line”。

    (2)close():關閉文件對象。對一個文件的操作結束是調用。如:a.close()。

    (3)readline():從文本中讀取一行文本,該函數返回一行的文本字符串,包括換行符“\n”。第一次使用返回文件的第一行文本,第二次返回第二行文本,依此類推。

             使用循環可遍歷文件中的每一行文本。 如:line1 = a.readline() ->返回a對象所指文件的第一行文本。

    (4)read():返回文件中剩余的文本組成的多行字符串,若打開文件時調用則返回文件中的所有內容(即使用read()之前沒有使用readline())。

    (5)readlines():返回由文件中剩余的文本(行)組成的列表,  遍歷返回的列表即可得到每一行的內容。如:

              假設一個文本test.txt中包含2行內容:one   two

              a = open("test.txt"),lines = a.readlines(),print(lines)->["one\n","two\n"]

              for line in lines:#遍歷文本

                print(line,len(line)) ->"one\n",4 注:換行符“\n”也包含在長度內,即比實際內容的長度多1

                          ->"two\n",4

  3.os模塊常用函數:文件路徑相關(使用前要導入os模塊:import os)

   (1)os.path:與路徑有關的模塊,包含了路徑操作相關的函數。由於路徑也是一個字符串,因此,操作路徑和操作字符串是一樣的。

    1)os.path.isfile(filepath):檢查路徑是不是指向一個文件(注:不是指文件夾)。返回TRUE or FALSE。

      2)os.path.join(dir1,dir2):將目錄名組合成路徑。如:os.path.join("d","test") ->d\test.(不同系統下輸出不完全一致)

    3)os.path.split(filepath):將路徑filepath的最后一個組件(即目錄名或文件名)提取出來。該函數返回包含兩個項的元組(或兩個值):

                   (最后一個組件的)父目錄路徑和最后一個組件。如:os.path.split("c:\\python\\test")->("c:\\python","test")。

      注:利用此函數可以用遞歸的方法將一個路徑完全分解為目錄名:

          def split_fully(path):

            parent,name = os.path.split(path)

            if name == “”: #當一個路徑不能再被分解時,第二個值就會返回空字符串

              return (parent,) #返回一個元組

            else

              return split_fully(parent) +(name,)

          調用:split_fully("D:\\a\\b\\c") ->("D:\\","a","b","c")

    4)os.path.splitext(filename):將一個文件的名稱和擴展名分開(即分離擴展名,從而判斷文件類型)。

      如:s = os.path.splitext("test.txt")->s = ("test",".txt"),s[1]->可獲得文件擴展名,若s[1]為空字符串,則為文件夾。

    5)os.path.normpath(path):規范或“清理“路徑。如:os.path.normpath("c:\\a\\b\\t\\..\\c") ->"c:\a\b\c","清理"了”t\\..“ 。

    6)os.path.abspath(filename):將相對路徑轉化為絕對路徑。函數不會檢查路徑是否存在。

    7)os.path.exists(path):檢查某個路徑是否存在,返回True or False。

    8)os.path.isdir(filepath):檢查路徑是不是指向一個目錄(即文件夾)。同isfile對應。

    9)os.path.getsize(filepath):在不必打開或掃描某個文件(不是指文件夾)的情況下以字節為單位返回該文件的大小。

      注:1.若路徑指向的是文件夾(即目錄),則返回0;2.若傳入的文件或路徑不存在則報WindowsError錯誤。

    10)os.path.getmtime(filepath):獲得文件上次被修改的時間。返回的值是從1970年到上次修改時間之間的秒數。

      注:可用函數time.ctime(seconds)將秒數轉化為日期時間格式,在使用該函數前記得導入time模塊:import time

   (2)os.listdir(path):返回一個目錄下所有名稱條目,包括文件和子目錄等內容。若目錄路徑不存在則報WindowsError錯誤。

      注:1.返回的條目只是一個名稱,沒有包含路徑,可以用os.path.join(path,條目名)得到相應條目的路徑。

        2.可對返回的條目進行排序(其實就是列表排序):sorted(os.listdir(path)),默認排序規則:數字->大寫字母->小寫字母

   (3)os.chmod:文件權限相關的模塊

  4.shutil模塊常用函數:文件重命名、移動、復制、刪除(使用前先導入shutil模塊:import shutil)

   (1)shutil.move(src,dest):重命名或移動文件(而不是移動目錄(即文件夾))。

      注:1)dest所指向的是一個文件,則為重命名;若指向的是一個目錄(即文件夾)則為移動文件。

        2)src必須指向一個存在的文件,否則不會報錯。重命名后的文件可為任意命名,甚至文件可不帶后綴。

        3)os.rename(src,dest)也具有重命名和移動文件的功能,但不常用。

   (2)shutil.copy(src,dest):復制文件。可重新命名新文件。

   (3)刪除文件:os.remove(file)。注:此方法不是shutil模塊的方法。

四、目錄操作:創建和刪除目錄(此處的目錄可理解為Windows下的文件夾)

  1.os.mkdir(dir):創建目錄,要創建的目錄的父目錄必須存在。

  2.os.makedirs(dir):創建目錄,要創建的目錄的父目錄可不存在。若父目錄不存在則創建父目錄。<簡單粗暴>

  3.os.rmdir(dir):刪除目錄,僅對空目錄有效。若目錄中文件則不能刪除。

  4.shutil.rmtree(dir):刪除目錄,目錄可不為空。【此函數慎用!】

 

五、通配

  1.含義:在指定目錄中找出滿足要求的文件  

  2.模塊:glob

  3.通配函數:glob.glob(pattern),該函數接受一個模式作為參數,返回所有匹配的文件名和路徑名列表。

    注:由於返回的文件包含路徑,可以使用函數os.path.split(file)將路徑和文件分離。

  4.常見通配符:

    (1)*:匹配0個或多個任意字符。如:m*(匹配所有以字符m開頭的文件),*.m*(匹配所有后綴名以字符m開頭的文件)。

    (2)?:匹配任意單個字符。如:???.txt(匹配恰好包含3個字符的文件.txt文件)。

    (3)[...]:匹配方括號中列出的任意一個字符。如:[abc]*(匹配以字符a或b或c開頭的文件)。

    (4)[!...]:匹配不在方括號中列出的任意一個字符。如:*[!s](匹配文件名不以字符s結尾的文件)。

      注:方括號中也可使用表示某個范圍的字符。如:[m-p](匹配m,n,o,p中任意一個字母);[!0-9](匹配非數字字符)

  5.區分大小寫:通配一般是區分大小寫的,如M*和m*匹配的內容是不同的。但在Windows下通配是不區分大小寫的。

  6.glob.glob(dir)和os.listdir(dir)

    (1)os.listdir:列出指定目錄下包含的文件,但不包括文件的路徑,即返回的是相對路徑。

    (2)glob.glob:可返回多個目錄下滿足匹配要求的文件,因為可在目錄或子目錄中指定通配符。

            如:glob.glob("*\\*.txt"):返回當前目錄的所有子目錄中擴展名為.txt的文件。

六、文件異常(IOError)

 

七、os中的異常(OSError)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM