常見全局函數:
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)