55.os模塊中關(guān)于文件/目錄常用的函數(shù)使用方法
getcwd()返回當(dāng)前工作目錄
>>> import os
>>> os.getcwd()
'D:\\python\\3.5.1'
chdir(path)改變工作目錄
>>> os.chdir('C:\\')
>>> os.getcwd()
'C:\\'
listdir(path='.')列舉指定目錄中的文件名('.'表示當(dāng)前目錄挟伙,'..'表示上一級(jí)目錄)
>>> os.listdir('.')
['$360Section', '$Recycle.Bin', '360SANDBOX', 'Boot', 'bootmgr', 'BOOTNXT', 'BOOTSECT.BAK', 'Config.Msi', 'Documents and Settings', 'hiberfil.sys', 'Intel', 'MSOCache', 'PerfLogs', 'Program Files', 'Program Files (x86)', 'ProgramData', 'Recovery', 'swapfile.sys', 'System Volume Information', 'Users', 'Windows', '學(xué)習(xí)暫存']
mkdir(path)創(chuàng)建單層目錄,如該目錄已存在拋出異常
1)創(chuàng)建一個(gè)文件夾
>>> os.mkdir('D:\\A')
>>> os.getcwd()
'C:\\'
>>> os.chdir('D:\\')
>>> os.listdir('.')
['$RECYCLE.BIN', '360', '360Downloads', 'A', 'AppStore', 'Axcure', 'BaiduNetdiskDownload', 'DTLFolder', 'Firefox', 'kuaiya', 'Movie', 'mysql', 'pagefile.sys', 'python', 'QQ', 'record.txt', 'SMSTSLog', 'System Volume Information', 'test.txt', 'visualstudiocode', 'weixin', 'WinRAR', '下載', '堅(jiān)果云', '射手播放器', '微云', '曹津', '百度云盤(pán)', '迅雷', '迅雷下載']
2)創(chuàng)建復(fù)合文件夾(夫文件夾已經(jīng)存在)
>>> os.mkdir('D:\\A\\B')
>>> os.listdir('.')
['$RECYCLE.BIN', '360', '360Downloads', 'A', 'AppStore', 'Axcure', 'BaiduNetdiskDownload', 'DTLFolder', 'Firefox', 'kuaiya', 'Movie', 'mysql', 'pagefile.sys', 'python', 'QQ', 'record.txt', 'SMSTSLog', 'System Volume Information', 'test.txt', 'visualstudiocode', 'weixin', 'WinRAR', '下載', '堅(jiān)果云', '射手播放器', '微云', '曹津', '百度云盤(pán)', '迅雷', '迅雷下載']
>>> os.chdir('D:\\A')
>>> os.getcwd()
'D:\\A'
>>> os.listdir('.')
['B']
makedirs(path)遞歸創(chuàng)建多層目錄,如該目錄已存在拋出異常,注意:‘E:\\a\\b'和'E:\\a\\c'并不會(huì)沖突
>>> os.makedirs('D:\\a\\b\\c')
>>> os.getcwd()
'D:\\A'
>>> os.listdir()
['B']
>>> os.chdir('D:\\')
>>> os.listdir()
['$RECYCLE.BIN', '360', '360Downloads', 'A', 'AppStore', 'Axcure', 'BaiduNetdiskDownload', 'DTLFolder', 'Firefox', 'kuaiya', 'Movie', 'mysql', 'pagefile.sys', 'python', 'QQ', 'record.txt', 'SMSTSLog', 'System Volume Information', 'test.txt', 'visualstudiocode', 'weixin', 'WinRAR', '下載', '堅(jiān)果云', '射手播放器', '微云', '曹津', '百度云盤(pán)', '迅雷', '迅雷下載']
>>> os.chdir('D:\\a')
>>> os.listdir()
['B']
>>> os.chdir('D:\\a\\B')
>>> os.listdir()
['c']
>>>
remove(path)刪除文件
>>> os.remove('D:\\a\\B\\c\\hhh.txt')
rmdir(path)刪除單層目錄,如該目錄非空則拋出異常
>>> os.rmdir('D:\\a\\B\\c')
Traceback (most recent call last):
?File "", line 1, in
???os.rmdir('D:\\a\\B\\c')
OSError: [WinError 145] 目錄不是空的五垮。: 'D:\\a\\B\\c'
>>>
removedirs(path)遞歸刪除目錄,從子目錄到父目錄逐層嘗試刪除,遇到目錄非空則拋出異常
>>> os.getcwd()
'D:\\a\\B'
>>> os.chdir('D:\\')
>>> os.removedirs('D:\\A\\B\\c')
>>> os.listdir('.')
['$RECYCLE.BIN', '360', '360Downloads', 'AppStore', 'Axcure', 'BaiduNetdiskDownload', 'DTLFolder', 'Firefox', 'kuaiya', 'Movie', 'mysql', 'pagefile.sys', 'python', 'QQ', 'record.txt', 'SMSTSLog', 'System Volume Information', 'test.txt', 'visualstudiocode', 'weixin', 'WinRAR', '下載', '堅(jiān)果云', '射手播放器', '微云', '曹津', '百度云盤(pán)', '迅雷', '迅雷下載']
rename(old,new)將文件old重命名為new
>>> os.getcwd()
'D:\\a\\B'
>>> os.chdir('D:\\')
>>> os.removedirs('D:\\A\\B\\c')
>>> os.listdir('.')
['$RECYCLE.BIN', '360', '360Downloads', 'AppStore', 'Axcure', 'BaiduNetdiskDownload', 'DTLFolder', 'Firefox', 'kuaiya', 'Movie', 'mysql', 'pagefile.sys', 'python', 'QQ', 'record.txt', 'SMSTSLog', 'System Volume Information', 'test.txt', 'visualstudiocode', 'weixin', 'WinRAR', '下載', '堅(jiān)果云', '射手播放器', '微云', '曹津', '百度云盤(pán)', '迅雷', '迅雷下載']
>>> os.rename('test.txt','hahah.txt')
>>> os.listdir('.')
['$RECYCLE.BIN', '360', '360Downloads', 'AppStore', 'Axcure', 'BaiduNetdiskDownload', 'DTLFolder', 'Firefox', 'hahah.txt', 'kuaiya', 'Movie', 'mysql', 'pagefile.sys', 'python', 'QQ', 'record.txt', 'SMSTSLog', 'System Volume Information', 'visualstudiocode', 'weixin', 'WinRAR', '下載', '堅(jiān)果云', '射手播放器', '微云', '曹津', '百度云盤(pán)', '迅雷', '迅雷下載']
>>>
system(command)運(yùn)行系統(tǒng)的shell命令
>>> os.system('cmd')
walk(top)
*以下支持路徑操作中常用倒的一些定義崎场,支持所有平臺(tái)
os.curdir指代當(dāng)前目錄('.')
>>> os.curdir
'.'
>>> os.listdir(os.curdir)#利用這個(gè)方式可以規(guī)避不同系統(tǒng)中不是用一個(gè)點(diǎn)來(lái)表示本目錄
['$RECYCLE.BIN', '360', '360Downloads', 'AppStore', 'Axcure', 'BaiduNetdiskDownload', 'DTLFolder', 'Firefox', 'hahah.txt', 'kuaiya', 'Movie', 'mysql', 'pagefile.sys', 'python', 'QQ', 'record.txt', 'SMSTSLog', 'System Volume Information', 'visualstudiocode', 'weixin', 'WinRAR', '下載', '堅(jiān)果云', '射手播放器', '微云', '曹津', '百度云盤(pán)', '迅雷', '迅雷下載']
os.pardir指代上一級(jí)目錄('..')
os.sep輸出操作系統(tǒng)特定的路徑分隔符(win下為'\\',linux下為'/')
os.linesep當(dāng)前平臺(tái)使用的行終止符(win下為'\r\n',linux下為'\n')
os.name指代當(dāng)前使用的操作系統(tǒng)(包括:posix遂蛀、nt谭跨、mac、os2李滴、ce螃宙、java)
2)os.path模塊中關(guān)于路徑常用的函數(shù)使用方法
basename(path)去掉目錄路徑,單獨(dú)返回文件名
>>> os.path.basename('D:\\a\\b\\c\\yangfei.txt')
'yangfei.txt'
dirname(path)去掉文件名所坯,單獨(dú)返回目錄路徑
>>> os.path.dirname('D:\\a\\b\\c\\yangfei.txt')
'D:\\a\\b\\c'
join(path1[,path1[,....]])將path1谆扎,path2各部分組合成一個(gè)路徑名
>>> os.path.join('A','B','C')
'A\\B\\C'
>>> os.path.join('D:\\','A','B','C')#join不會(huì)真的去建立文件夾
'D:\\A\\B\\C'
>>> os.getcwd()
'D:\\'
>>> os.chdir('D:\\A')
Traceback (most recent call last):
?File "", line 1, in
???os.chdir('D:\\A')
FileNotFoundError: [WinError 2] 系統(tǒng)找不到指定的文件。: 'D:\\A'
split(path)分割文件名與路徑芹助,返回(f_path,f_name)元組堂湖,如果完全使用目錄闲先,它會(huì)將最后一個(gè)目錄作為文件名分離,且不會(huì)判斷文件或目錄是否存在
>>> os.path.split('E:\\A\\sexy.avi')
('E:\\A', 'sexy.avi')
>>> os.path.split('E:\\A\\B')
('E:\\A', 'B')
splitext(path)分離文件名與擴(kuò)展名无蜂,返回(f_name,f_extension)元組
>>> os.path.splitext('E:\\a\\sexy.avi')
('E:\\a\\sexy', '.avi')
getsize(file)返回指定文件的尺寸伺糠,單位是字節(jié)
>>> os.getcwd()
'D:\\'
>>> os.path.getsize('hahah.txt')
13
getatime(file)返回指定文件最近的訪問(wèn)實(shí)際(浮點(diǎn)型秒數(shù),可用time模塊的gmtime()或者localtime()函數(shù)換算)
getctime(file)返回指定文件的創(chuàng)建時(shí)間(浮點(diǎn)型秒數(shù)酱讶,可用time模塊的gmtime()或者localtime()函數(shù)換算)
getmtime(file)返回指定文件最新的修改時(shí)間(浮點(diǎn)型秒數(shù)退盯,可用time模塊的gmtime()或者localtime()函數(shù)換算)
>>> os.path.getatime('hahah.txt')
1515416742.079957
>>> import time
>>> time.localtime(os.path.getatime('hahah.txt'))
time.struct_time(tm_year=2018, tm_mon=1, tm_mday=8, tm_hour=21, tm_min=5, tm_sec=42, tm_wday=0, tm_yday=8, tm_isdst=0)
*以下為函數(shù)返回True或False
exists(path)判斷指定路徑(目錄或文件)是否存在
>>> os.listdir('.')
['$RECYCLE.BIN', '360', '360Downloads', 'AppStore', 'Axcure', 'BaiduNetdiskDownload', 'DTLFolder', 'Firefox', 'hahah.txt', 'kuaiya', 'Movie', 'mysql', 'pagefile.sys', 'python', 'QQ', 'record.txt', 'SMSTSLog', 'System Volume Information', 'visualstudiocode', 'weixin', 'WinRAR', '下載', '堅(jiān)果云', '射手播放器', '微云', '曹津', '百度云盤(pán)', '迅雷', '迅雷下載']
>>> exists('D:\\360')
Traceback (most recent call last):
?File "", line 1, in
???exists('D:\\360')
NameError: name 'exists' is not defined
>>> os.path.exists('D:\\360')
True
isabs(path)判斷指定路徑是否為絕對(duì)路徑
>>> os.path.isabs('D:\\360')
True
isdir(path)判斷指定路徑是否存在且是一個(gè)目錄
isfile(path)判斷指定路徑是否存在且是一個(gè)文件
islink(path)判斷指定路徑是否存在且是一個(gè)符合鏈接
ismount(path)判斷指定路徑是否存在且是一個(gè)掛載點(diǎn)
samefile(path1,path2)判斷path1和path2兩個(gè)路徑是否指向同一個(gè)文件
>>> os.path.exists('D:\\360')
True
>>> os.path.isabs('D:\\360')
True
>>> os.path.isabs('曹津\\PS4')
False
>>> os.path.isdir('D:\\360')
True
>>> os.path.isfile('D:\\360')
False
>>> os.path.islink('D:\\360')
False
>>> os.path.ismount('D:\360')
False
>>> os.path.ismount('D:\\')
True
56.pickle模塊
1)將文件存放成二進(jìn)制:picking
2)將二進(jìn)制文件讀取成源文件:unpikling
3)將列表寫(xiě)入成二進(jìn)制文件,再將二進(jìn)制文件解壓讀出
>>> import pickle? #引入pickle模塊
>>> my_list=[123,3.14,'xiaojiayu',['another list']]? #定義一個(gè)列表my_list
>>> pickle_file1=open('my_file.plk','wb')? #以wb形式打開(kāi)(沒(méi)的話就新增)文件my_file.plk泻肯,賦給對(duì)象pickle_file1
>>> pickle.dump(my_list,pickle_file1) #利用pickle的dump函數(shù)將my_list的數(shù)據(jù)以二進(jìn)制形式倒入倒pickle_file1中
>>> pickle_file1.close()#關(guān)閉pickle_file1
>>> pickle_file2=open('my_file.plk','rb')#以二進(jìn)制讀出的形式rb打開(kāi)my_file.plk并賦給對(duì)象pickle_file2
>>> pickle.load(pickle_file2)#利用pickle的load函數(shù)將pickle_file2解壓后讀出
[123, 3.14, 'xiaojiayu', ['another list']]