轉(zhuǎn):http://blog.csdn.net/gexiaobaohelloworld/article/details/7828110
python os模塊
1. os.sep可以取代操作系統(tǒng)特定的路徑分割符。
2. os.name字符串指示你正在使用的平臺(tái)。比如對(duì)于Windows,它是'nt',而對(duì)于Linux/Unix用戶,它是'posix'。
4. os.getenv()os.putenv()函數(shù)分別用來讀取和設(shè)置環(huán)境變量。,,
7.os.system()函數(shù)用來運(yùn)行shell命令。
8. os.linesep字符串給出當(dāng)前平臺(tái)使用的行終止符。例如,Windows使用'\r\n',Linux使用'\n'而Mac使用'\r'。,
12. os.curdir返回當(dāng)前目錄('.')
,
os.path.getsize(name):獲得文件大小,如果name是目錄返回0L
os.path.abspath(name):獲得絕對(duì)路徑
os.path.normpath(path):規(guī)范path字符串形式
os.path.join(path,name):連接目錄與文件名或目錄
os.path.basename(path):返回文件名
os.path.dirname(path):返回文件路徑
http://hi.baidu.com/jxq61/item/e52aaddb064cb43e49e1dd88
s = os.getcwd()
# s 中保存的是函數(shù)得到當(dāng)前工作目錄,即當(dāng)前Python腳本工作的目錄路徑。
[python]view plaincopy
#?-*?-?coding:?UTF-8?-*?-
importos
importtime
#在工作目錄下創(chuàng)建一個(gè)“2012-08-06_13-20-29”這樣的文件夾
folder?=?time.strftime(r"%Y-%m-%d_%H-%M-%S",time.localtime())
os.makedirs(r'%s/%s'%(os.getcwd(),folder))
os.chdir( "C:\\123")
#將當(dāng)前目錄設(shè)為 "C:\123", 相當(dāng)于DOC命令的 CD C:\123
#說明: 當(dāng)指定的目錄不存在時(shí),引發(fā)異常。
fpath, fname = os.path.split( "c:\\123\\456\\test.txt" )
print fpath
print fname
顯示:
c:\123\456
test.txt
#?事實(shí)上,如果你完全使用目錄,它也會(huì)將最后一個(gè)目錄作為文件名而分離,同時(shí)它不會(huì)判斷文件或目錄是否存在
fpathandname, fext = os.path.splitext( "c:\\123\\456\\test.txt" )
print fpathandname
print fext
顯示:
c:\123\456\test
.txt
b = os.path.exists( "c:\\123\\456\\test.txt")
返回值b: True 或 False
b = os.path.isfile( "c:\\123\\456\\test.txt")
返回值b: True 或 False
b = os.path.isdir( "c:\\123\\456\\")
返回值b: True 或 False
L = os.listdir( "c:\\" )
print L
顯示 :
['1.avi', '1.jpg', '1.txt', 'CONFIG.SYS', 'Inetpub', 'IO.SYS', 'KCBJGDJC', 'KCBJGDYB', 'KF_GSSY_JC', 'MSDOS.SYS',?'MSOCache', 'NTDETECT.COM', 'ntldr', 'pagefile.sys', 'PDOXUSRS.NET', 'Program Files', 'Python24', 'Python31',?'QQVideo.Cache', 'RECYCLER', 'System Volume Information', 'TDDOWNLOAD', 'test.txt', 'WINDOWS']
# 這里面既有文件也有目錄
[python]view plaincopy
defgetDirList(?p?):
p?=?str(?p?)
ifp=="":
return[?]
p?=?p.replace("/","\\")
ifp[?-1]?!="\\":
p?=?p+"\\"
a?=?os.listdir(?p?)
b?=?[?xforxinaifos.path.isdir(?p?+?x?)?]
returnb
printgetDirList("C:\\")
結(jié)果:
['Documents and Settings', 'Downloads', 'HTdzh', 'KCBJGDJC', 'KCBJGDYB', 'KF_GSSY_JC', 'MSOCache', 'Program Files',?'Python24', 'Python31', 'QQVideo.Cache', 'RECYCLER', 'System Volume Information', 'TDDOWNLOAD', 'WINDOWS']
2 獲取某指定目錄下的所有文件的列表
[python]view plaincopy
defgetFileList(?p?):
p?=?str(?p?)
ifp=="":
return[?]
p?=?p.replace("/","\\")
ifp[?-1]?!="\\":
p?=?p+"\\"
a?=?os.listdir(?p?)
b?=?[?xforxinaifos.path.isfile(?p?+?x?)?]
returnb
printgetFileList("C:\\")
結(jié)果:
['1.avi', '1.jpg', '1.txt', '123.txt', '12345.txt', '2.avi', 'a.py', 'AUTOEXEC.BAT', 'boot.ini', 'bootfont.bin',?'CONFIG.SYS', 'IO.SYS', 'MSDOS.SYS', 'NTDETECT.COM', 'ntldr', 'pagefile.sys', 'PDOXUSRS.NET', 'test.txt']
os.makedirs( ? "C:\\123\\456\\789")
調(diào)用有可能失敗,可能的原因是:
(1) path 已存在時(shí)(不管是文件還是文件夾)
(2) 驅(qū)動(dòng)器不存在
(3) 磁盤已滿
(4)磁盤是只讀的或沒有寫權(quán)限
os.rmdir( "c:\\123\\456\\"?)
產(chǎn)生異常的可能原因:
(1) path 不存在
(2) path 子目錄中有文件或下級(jí)子目錄
(3) 沒有操作權(quán)限或只讀
# 測(cè)試該函數(shù)時(shí),請(qǐng)自已先建立子目錄。
os.remove( ?"c:\\123\\456\\test.txt" )
產(chǎn)生異常的可能原因:
(1) ? filename 不存在
(2) 對(duì)filename文件, 沒有操作權(quán)限或只讀。
os.name( oldfileName, newFilename)
產(chǎn)生異常的原因:
(1) oldfilename 舊文件名不存在
(2) newFilename 新文件已經(jīng)存在時(shí),此時(shí),您需要先岀除 newFilename 文件
[python]view plaincopy
#?-*?-?coding:?UTF-8?-*?-
#?!?/usr/bin/python
spath?="D:\\myapps\\python\\HelloWorld.txt"
f?=?open(spath,"w")
f.write("First?line?1.\n")
f.writelines("First?line?2.")
f.close()
f?=?open(spath,"r")
forlineinf:
print("每一行的數(shù)據(jù)是:%s"%?line)
f.close()
'''''
知識(shí)點(diǎn):?如何讀寫文件
'''
[python]view plaincopy
#?-*?-?coding:?UTF-8?-*?-
#?!?/usr/bin/python
importos
importos.path
#?os,os.path里包含大多數(shù)文件訪問的函數(shù),所以要先引入它們.
#?請(qǐng)按照你的實(shí)際情況修改這個(gè)路徑
rootdir?="D:\\myapps\\python\\"
forparent,?dirnames,?filenamesinos.walk(rootdir):
#?case?1:
fordirnameindirnames:
print("?parent?is:?"+?parent)
print("?dirname?is:?"+?dirname)
#?case?2
forfilenameinfilenames:
print("?parent?is:?"+?parent)
print("?filename?with?full?path?:?"+?os.path.join(parent,?filename))
'''''?知識(shí)點(diǎn):
*?os.walk返回一個(gè)三元組.其中dirnames是所有文件夾名字(不包含路徑),filenames是所有文件的名字(不包含路徑).parent表示父目錄.
*?case1?演示了如何遍歷所有目錄.
*?case2?演示了如何遍歷所有文件.
*?os.path.join(dirname,filename)?:?將形如"/a/b/c"和"d.java"變成/a/b/c/d.java".
'''
[python]view plaincopy
#?-*?-?coding:?UTF-8?-*?-
#?!?/usr/bin/python
importos.path
#?常用函數(shù)有三種:分隔路徑,找出文件名.找出盤符(windows系統(tǒng)),找出文件的擴(kuò)展名.
#?根據(jù)你機(jī)器的實(shí)際情況修改下面參數(shù).
spath?="D:\\myapps\\python\\1.py"
#?case?1:
p,f?=?os.path.split(spath);
print("?dir?is:?"+?p)
print("?file?is:?"+?f)
#?case?2:
drv,left?=?os.path.splitdrive(spath);
print("?driver?is:?"+?drv)
print("?left?is:?"+?left)
#?case?3:
f,ext?=?os.path.splitext(spath);
print("?f?is:?"+?f)
print("?ext?is:?"+?ext)
'''''
知識(shí)點(diǎn):?這三個(gè)函數(shù)都返回二元組.
*?case1?分隔目錄和文件名
*?case2?分隔盤符和文件名
*?case3?分隔文件和擴(kuò)展名
'''
16,復(fù)制文件/文件夾
[python]view plaincopy
#?-*?-?coding:?UTF-8?-*?-
#?!?/usr/bin/python
importshutil
importos
importos.path
src?="D:\\myapps\\python\\2.py"
dst?="D:\\myapps\\python\\2.bak.py"
dst2="D:\\myapps\\2.bak2.py"
#判斷源文件是否存在,如果不存在則生成一個(gè)src測(cè)試文件
dir1?=?os.path.dirname(src)
print("dir1?%s?"%?dir1)
if(os.path.exists(src)?==False):
os.makedirs(dir1)
f1?=?open(src,"w")
f1.write("line?a\n")
f1.write("line?b\n")
f1.close()
#拷貝文件src到dst
shutil.copyfile(src,?dst)
shutil.copyfile(src,?dst2)
#讀取dst
f2?=?open(dst,"r")
forlineinf2:
print(line)
f2.close()
#?測(cè)試復(fù)制文件夾樹
try:
srcDir?="D:\\myapps"
dstDir?="D:\\myapps2"
#?如果dstDir已經(jīng)存在,那么shutil.copytree方法會(huì)報(bào)錯(cuò)!
#?這也意味著你不能直接用d:作為目標(biāo)路徑.
shutil.copytree(srcDir,?dstDir)
exceptException?as?err:
print(err)
'''''
知識(shí)點(diǎn):
*?shutil.copyfile:如何復(fù)制文件
*?os.path.exists:如何判斷文件夾是否存在
*?shutil.copytree:如何復(fù)制目錄樹
'''