Python:文件檢索,輸出絕對(duì)路徑

? ? 最近剛開(kāi)始學(xué)習(xí)Python,在學(xué)習(xí)過(guò)程中有一個(gè)小作業(yè),讓我們寫(xiě)一個(gè)檢索并輸出目錄下文件的絕對(duì)路徑的小腳本。來(lái)這里記錄一下這個(gè)過(guò)程。

?? ?在系統(tǒng)的“OS”模塊中,是有遍歷目錄這個(gè)函數(shù)的(后來(lái)才知道),先上一個(gè)我自己寫(xiě)的——利用函數(shù)的遞歸實(shí)現(xiàn)檢索并輸出文件及文件夾的絕對(duì)路徑。

#!/usr/bin/python

#coding:utf-8

import os

def panduan():

? ? pathlist = os.listdir(os.getcwd())

? ? for file in pathlist:

? ? ? ? if os.path.isdir(os.getcwd()+'/%s' % file):

? ? ? ? ? ? result.write('%s:'%file+os.getcwd()+'/%s\n'%file) #將文件夾路徑寫(xiě)入result.txt文件

? ? ? ? ? ? os.chdir(os.getcwd()+"/%s"%file)

? ? ? ? ? ? panduan()

? ? ? ? ? ? os.chdir('..')

? ? ? ? else :

? ? ? ? ? ? result.write("%s:" % file+os.getcwd()+"/%s\n"%file)

def again():

? ??try:

? ? ? ? os.chdir(raw_input('請(qǐng)輸入檢索的文件目錄:'))

? ? except OSError,e:

? ? ? ? try :

? ? ? ? ? ? os.chdir(raw_input('該目錄不存在,請(qǐng)?jiān)俅屋斎霗z索的文件目錄:'))

? ? ? ? except OSError,e:

? ? ? ? ? ? print "目錄不存在,請(qǐng)確認(rèn)文件目錄,并重新運(yùn)行腳本!"

again()

result = open('result.txt','w+')

panduan()

result.close()

? ? 值得注意的是,如果先行調(diào)用“again”函數(shù),result.txt文件就會(huì)在所輸入的目錄生成。例如,要檢索root目錄下,result.txt文件就會(huì)生成在root目錄下;后調(diào)用“again”函數(shù),result.txt文件就會(huì)生成在你當(dāng)前所在的目錄。

? ? 接下來(lái)展示一下通過(guò)“OS”模塊中的”os.walk()”進(jìn)行文件目錄檢索的程序代碼:

#!/usr/bin/python

#coding=utf8

import os

path = raw_input("請(qǐng)輸入檢索文件目錄:")

if not os.path.isdir(path):

? ? path = raw_input("該目錄不存在,請(qǐng)?jiān)俅屋斎霗z索文件目錄:")

? ? if not os.path.isdir(path):

? ? ? ? print '目錄不存在,請(qǐng)確認(rèn)文件目錄,并重新運(yùn)行腳本'

? ? ? ? exit()

result = open('result.txt','w+')

g = os.walk(path)

for path,d,filelist in g:

? ? for filename in filelist :

? ? ? ? result.write('%s:'%filename+os.path.join(path,filename))

result.close()

? ? 第一種方法在檢索一些涉及更高權(quán)限要求的文件目錄時(shí),無(wú)法全部檢索到,且代碼書(shū)寫(xiě)較復(fù)雜。相比之下,利用“OS”模塊中的“os.walk()”進(jìn)行遍歷、輸出,無(wú)論是從代碼的書(shū)寫(xiě)還是最后結(jié)果的輸出,都明顯優(yōu)于第一種利用循環(huán)語(yǔ)句進(jìn)行遞歸得到的結(jié)果。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容