1. 程式人生 > >python目錄操作一

python目錄操作一

文件夾 特定 自動 文件的 book 操作系統 錯誤信息 若有 後綴

目錄操作

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’ 是

linux 或者 unix)

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目錄操作一