一.os包
os包包括各種各樣的函數(shù),以實現(xiàn)操作系統(tǒng)的許多功能徘意。這個包非常龐雜苔悦。
?import os.path
path="/home/User/Document/test.txt"
print(os.path.basename(path)) # 查詢路徑中包含的文件名
print(os.path.dirname(path)) # 查詢路徑中包含的目錄
filename=os.path.basename(path) # 查詢路徑中包含的文件名
extension_name=os.path.splitext(filename) # 查詢文件名稱中的擴展名
示例(單獨示例):
import arcpy.mapping as mapping,os
path = r"C:"
f = open("BrokenDataLinks.txt","w")
for root,dirs,files in os.walk(path):
for filename in files:
basename,extension = os.path.splitext(filename)
if extension = ".mxd":
fullpath = os.path.join(root,filename)
mxd = mapping.MapDocument(fullpath)
f.write("MXD:" + filename + "\n")
brknList = mapping.ListBrokenDataSources(mxd)
for brknItem in brknList:
f.write("\t" + brknItem.name + "\n")
f.close()
path="/home/User/Document/test.txt"
info = os.path.split(path) # 將路徑分割成文件名和目錄兩個部分,放在一個表中返回
print(info[0]) #info[0]返回路徑椎咧,即/home/User/Document玖详,注意最后無/,與os.path.basename(path)返回結(jié)果一模一樣。
print(info[1]) #info[1]返回完成文件名稱勤讽,即test.txt,與os.path.dirname(path)返回結(jié)果一模一樣蟋座。
path2 = os.path.join('/', 'home', 'User', 'Document', 'file1.txt') # 使用目錄名和文件名構(gòu)成一個路徑字符串
print(path2)
p_list = [path, path2]
print(os.path.commonprefix(p_list)) # 查詢多個路徑的共同部
另外還有:
print(os.path.exists(path)) # 查詢文件是否存在
print(os.path.getsize(path)) # 查詢文件大小
print(os.path.getatime(path)) # 查詢文件上一次讀取的時間
print(os.path.getmtime(path)) # 查詢文件上一次修改的時間
print(os.path.isfile(path)) # 路徑是否指向常規(guī)文件
print(os.path.isdir(path)) # 路徑是否指向目錄文件
os包的一些命令就是用于文件管理。
mkdir(path)
創(chuàng)建新目錄脚牍,path為一個字符串向臀,表示新目錄的路徑,它只能一層一層地建目錄诸狭。相當于$mkdir命令券膀。注意:mkdirs(path)相當于mkdir -p /var/zs/zs1/zs2
rmdir(path)
刪除空的目錄,path為一個字符串驯遇,表示想要刪除的目錄的路徑芹彬。相當于$rmdir命令。**補充一點叉庐,前面說的如果目錄不空舒帮,就不能用 os.removedirs() 刪除(removedirs刪除多級空目錄,rmdir刪除一級空目錄)陡叠。但是会前,可以用模塊 shutil 的 rmtree 方法。如:import shutil
shutil.rmtree(path)
listdir(path)
返回目錄中所有文件匾竿。相當于$ls命令瓦宜。
例如:
import os
dir = "E:\testData\spark\spark1.6"
files=os.listdir(dir)
for file in files:
if os.path.isfile(file):
print file
#file僅僅是一個不帶目錄的文件名
f = open(dir + "\" + file,'r')
print f.readlines()
f.close
remove(path)
刪除path指向的文件。
rename(src, dst)
重命名文件岭妖,src和dst為兩個路徑临庇,分別表示重命名之前和之后的路徑。
chmod(path, mode)
改變path指向的文件的權(quán)限昵慌。相當于$chmod命令假夺。
chown(path, uid, gid)
改變path所指向文件的擁有者和擁有組。相當于$chown命令斋攀。
stat(path)
查看path所指向文件的附加信息已卷,相當于$ls -l命令。
示例如下:
指定一個文件
path=r"e:\zs"
pf = path + "/README.md"
此文件的信息
os.stat(pf)
posix.stat_result(st_mode=33279, st_ino=67L, st_dev=26L, st_nlink=1, st_uid=0, st_gid=0, st_size=50L, st_atime=1429580969, st_mtime=1429580969, st_ctime=1429580969)
從結(jié)果中看淳蔼,可能看不出什么來侧蘸,先不用著急裁眯。這樣的結(jié)果是對 computer 姑娘友好的,對讀者可能不友好讳癌。如果用下面的方法穿稳,就友好多了:
fi = os.stat(pf)
mt = fi[8]
fi[8] 就是 st_mtime 的值,它代表最后 modified(修改)文件的時間晌坤》晁遥看結(jié)果:
mt
1429580969
還是不友好。下面就用 time 模塊來友好一下:
import time
time.ctime(mt)
'Tue Apr 21 09:49:29 2015'
現(xiàn)在就對讀者友好了骤菠。
symlink(src, dst)
為文件dst創(chuàng)建軟鏈接它改,src為軟鏈接文件的路徑。相當于$ln -s命令商乎。
getcwd()
查詢當前工作路徑 (cwd, current working directory)央拖,相當于$pwd命令。
os.system() 是在當前進程中執(zhí)行命令截亦,直到它執(zhí)行結(jié)束爬泥。如果需要一個新的進程柬讨,可以使用 os.exec 或者os.execvp崩瓤。另外,os.system() 是通過 shell 執(zhí)行命令踩官,執(zhí)行結(jié)束后將控制權(quán)返回到原來的進程却桶,但是os.exec() 及相關(guān)的函數(shù),則在執(zhí)行后不將控制權(quán)返回到原繼承蔗牡,從而使 Python 失去控制颖系。
system(command) -> exit_status(返回執(zhí)行狀態(tài)碼,0或1)
不管是什么操作系統(tǒng)辩越,只要如下操作就能打開網(wǎng)頁了:
import webbrowser
webbrowser.open("http://www.itdiffer.com")
不必再使用os.system(command)那么繁瑣了嘁扼,需要找瀏覽器路徑。
os.popen(command):返回文件對象黔攒,將命令執(zhí)行結(jié)果組織成文件對象趁啸。類似于linux shell編程中的command
或$(command),這兩個命令執(zhí)行后返回的是命令執(zhí)行結(jié)果,而非命令執(zhí)行狀態(tài)碼督惰。
popen(...)
popen(command [, mode='r' [, bufsize]]) -> pipe
Open a pipe to/from a command returning a file object.
for line in os.popen("ls -l /mnt"):
print(line)
二. shutil包
copy(src, dst)
復(fù)制文件不傅,從src到dst。相當于$cp命令赏胚。
move(src, dst)
移動文件访娶,從src到dst。相當于$mv命令觉阅。
比如我們想復(fù)制文件a.txt:
import shutil
shutil.copy( 'a.txt','b.txt')
以上相關(guān)函數(shù)跟Linux系統(tǒng)下shell命令非常相似崖疤,熟悉Linux的人一看就可以明白了秘车。
三.glob包
glob包最常用的方法只有一個, glob.glob()。該方法的功能與Linux中的ls相似戳晌。
接受一個Linux式的文件名格式表達式(filename pattern expression)鲫尊,
列出所有符合該表達式的文件(與正則表達式類似),將所有文件名放在一個表中返回沦偎。
所以glob.glob()是一個查詢目錄下文件的好方法疫向。
該文件名表達式的語法與Python自身的正則表達式不同,對應(yīng)關(guān)系大致如下:
Filename Pattern Expression Python Regular Expression
* .*
? .
[0-9] same
[a-e] same
[^mnp] same