python目錄操作一
Python os 模塊提供了一個統一的操作系統接口函數, 這些接口函數通常是平
臺指定的,os 模塊能在不同操作系統平臺(如 nt 或 posix)中的特定函數間
自動切換,從而能實現跨平臺操作。
python中對文件、文件夾(文件操作函數)的操作需要涉及到os模塊和shutil
模塊。
引入該模塊,import os
- os.getcwd()
獲取當前工作目錄,即當前Python腳本工作的目錄路徑
import os
way = os.getcwd()
print way
D:\LEARN\ebook\python\Test
- os. chdir(path)
改變當前腳本工作目錄;相當於shell下的cd命令
workPath = os.getcwd()
print u"當前工作目錄:", workPath
#改變工作目錄
os.chdir(‘D:\LEARN\ebook\python‘)
print u"改變後的工作目錄:", os.getcwd()
結果:
當前工作目錄: D:\TOOL\PycharmProjects\python\December
改變後的工作目錄: D:\LEARN\ebook\python
os.pardir
返回當前目錄的父目錄(‘..‘)
os.name
獲取當前使用的操作系統類型:
print os.name
‘nt‘
(其中 ‘nt’ 是 windows,’ posix’ 是
os.mkdir
os.makedirs(path [, mode=0777])
可生成多層遞歸目錄,父目錄如果不存在,遞歸生成。
參數mode表示生成的目錄的權限,默認是超級權限,也就是0777。
代碼示例:
#encoding=utf-8
import os
os.makedirs(r‘c:\gloryroad\test‘)
執行結果:
在c盤錄下生成gloryroad目錄,並在目錄下新建test目錄
os.popen(command [, mode=‘r‘ [, bufsize]])
運行shell命令,並返回一個文件對象。然後通過操作文件的方法去操作這個
文件對象。
encoding=utf-8 import os dirList = os.popen(‘dir d:\\test*.*‘) for i in dirList.readlines() : print
- os.walk(top, topdown=True, onerror=None, followlinks=False)
參數說明:
top:表示需要遍歷的目錄樹的路徑。
topdown的默認值是“True” ,表示首先返回目錄樹下的文件,然後遍歷目錄樹下的
子目錄。值設為False時,則表示先遍歷目錄樹下的子目錄,返回子目錄下的文件,最後
返回根目錄下的文件。
onerror的默認值是“None” ,表示忽略文件遍歷時產生的錯誤。如果不為空,則提
供一個自定義函數提示錯誤信息後繼續遍歷或拋出異常中止遍歷。
該函數返回一個列表,列表中的每一個元素都是一個元組,該元組有3個元素,分別表
示每次遍歷的路徑名,目錄列表和文件列表。
默認情況下,os.walk 不會遍歷軟鏈接指向的子目錄,若有需要請將followlinks設定為
true
獲取目錄下所有目錄多少,文件多少
#encoding=utf-8
import os
for root, dirs, files in os.walk("e:\\test2",topdown=False) :
print u“當前目錄:",root #打印目錄絕對路徑
for name in files :
print u‘文件名:‘,os.path.join(root,name) #打印文件絕對路徑
for name in dirs :
print u‘目錄名:‘,name #打印目錄絕對路徑
directory = 0
filename = 0
for root, dirs, files in os.walk("E:\syswin\\nmon_report", topdown=False):
print u"當前目錄:", root # 打印目錄絕對路徑
for name in files:
print u‘文件名:‘, os.path.join(root, name) # 打印文件絕對路徑
filename += 1
for name in dirs:
print u‘目錄名:‘, name # 打印目錄絕對路徑
directory += 1
print "目錄名有:",directory,"個"
print "文件名有:",filename,"個"
練習1:找到文件1.txt所在的絕對路徑
#encoding=utf-8
import os
for root, dirs, files in os.walk("e:\\test2",topdown=False) :
#print u"當前目錄:",root #打印目錄絕對路徑
for name in files :
#print u‘文件名:‘,os.path.join(root,name) #打印文件絕對路徑
if name.decode("gbk") == u"文件1.txt":
print u‘文件名:‘,os.path.join(root,name)
練習2:統計一下test2下的所有子目錄有幾個,一共有多少個文件
#encoding=utf-8
import os
dir_num=0
file_num=0
for root, dirs, files in os.walk("e:\\test2",topdown=False) :
#print u"當前目錄:",root #打印目錄絕對路徑
for name in files :
file_num+=1
for dir in dirs:
dir_num+=1
print "file number:",file_num
print "dir number:",dir_num
統計目錄下:“.txt”
file_name = 0
for root, dirs, files in os.walk("E:\syswin\\nmon_report", topdown=False):
# print u"當前目錄:",root #打印目錄絕對路徑
for name in files:
if ".txt" == name[-4:]:
file_name += 1
print file_name
把一個目錄下的所有文件名,打印一下,註意不要包含後綴名
file_names = []
for root, dirs, files in os.walk("E:\syswin\\nmon_report", topdown=False):
# print u"當前目錄:",root #打印目錄絕對路徑
for name in files:
file_names.append(os.path.splitext(name)[0])
for i in file_names:
print i
python目錄操作一