用 Python 实现文件查找
生活随笔
收集整理的這篇文章主要介紹了
用 Python 实现文件查找
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
用 Python 實(shí)現(xiàn)文件查找(BIF實(shí)現(xiàn)及隊(duì)列實(shí)現(xiàn))
(1)利用內(nèi)置函數(shù)實(shí)現(xiàn)文件查找
1、功能:返回用戶輸入的文件的絕對(duì)路徑
2、設(shè)計(jì)思路:
- (1)用戶輸入在哪個(gè)盤進(jìn)行查找
- (2)遍歷此盤文件,若為目標(biāo)文件則輸出
- (2)無(wú)此文件,則輸出錯(cuò)誤
3、實(shí)驗(yàn)代碼
#查找某個(gè)目錄下的目標(biāo)文件 import os #引入操作系統(tǒng)模塊 import sys #用于標(biāo)準(zhǔn)輸入輸出def search(path,name):for root, dirs, files in os.walk(path): # path 為根目錄if name in dirs or name in files:flag = 1 #判斷是否找到文件root = str(root)dirs = str(dirs)return os.path.join(root, dirs)return -1path = input('請(qǐng)輸入您要查找哪個(gè)盤中的文件(如:D:\\\)') print('請(qǐng)輸入您要查找的文件名:') name = sys.stdin.readline().rstrip() #標(biāo)準(zhǔn)輸入,其中rstrip()函數(shù)把字符串結(jié)尾的空白和回車刪除 answer = search(path,name) if answer == -1:print("查無(wú)此文件") else:print(answer)4、運(yùn)行結(jié)果展示
1、無(wú)此文件
2、有此文件
(2)隊(duì)列實(shí)現(xiàn)文件查找
1、設(shè)計(jì)思路
定義隊(duì)列 ALLFiles 存儲(chǔ)所有文件while ALLFiles 不為空if pop 為目錄then 將目錄內(nèi)所有文件入隊(duì)elesif pop 為文件then if 為目標(biāo)文件then breakend 輸出路徑2、實(shí)驗(yàn)代碼
#查找某個(gè)目錄下的目標(biāo)文件 import os #引入操作系統(tǒng)模塊 import sys #用于標(biāo)準(zhǔn)輸入輸出 import easygui as g #引入圖形用戶界面def search(path1,name):Allfiles = [] #創(chuàng)建隊(duì)列Allfiles.append(path1)while len(Allfiles) != 0: #當(dāng)隊(duì)列中為空的時(shí)候跳出循環(huán)path =Allfiles.pop(0) #從隊(duì)列中彈出首個(gè)路徑if os.path.isdir(path): #判斷路徑是否為目錄ALLFilePath =os.listdir(path) #若是目錄,遍歷將里面所有文件入隊(duì)for line in ALLFilePath:newPath =path +"\\"+line #形成絕對(duì)路徑Allfiles.append(newPath)else: #如果是一個(gè)文件,判斷是否為目標(biāo)文件target = os.path.basename(path)if target == name:return pathreturn -1path = g.enterbox(msg='請(qǐng)輸入文件目錄(如:D:DEV)') name = g.enterbox(msg='請(qǐng)輸入您要查找的文件名:') answer = search(path,name) if answer == -1:g.msgbox("查無(wú)此文件",'查找錯(cuò)誤') else:g.msgbox(answer,'返回路徑')3、運(yùn)行結(jié)果
有此文件
無(wú)此文件
遇到問(wèn)題及解決方法
- 編譯錯(cuò)誤:
解決方法:os.path.join() 的參數(shù)是 str 型, 添加代碼root = str(root) dirs = str(dirs) - 縮進(jìn)錯(cuò)誤:
解決方法:為了看看它能輸出多少,我等待了五分鐘,它還沒(méi)有結(jié)束;結(jié)果把if name in dirs or name in files:語(yǔ)句重新打了一遍就可以了,應(yīng)該是縮進(jìn)的錯(cuò)誤 - 答案錯(cuò)誤:把相同目錄下的其他文件也輸出出來(lái)了
解決方法:
os.walk() 的 dirs 參數(shù) 才是返回目錄,將print(os.path.join(root, files))改為print(os.path.join(root, dirs)) - 答案錯(cuò)誤:輸出的路徑不是絕對(duì)路徑
解決方法:將for root, dirs, files in os.walk('/'): # / 為根目錄 改為 for root, dirs, files in os.walk(path): # path 為根目錄
心得體會(huì)
- 代碼雖然很短,但是完成它的過(guò)程很不容易
- Python 中 循環(huán)和 if 分支后不用加大括號(hào),但是需要: ,而且縮進(jìn)要十分注意
- Python 不用定義類型并不代表變量沒(méi)有類型,使用變量前需要先賦值
- 序列包含 列表、元組和字符串
列表主要標(biāo)志是[ ],是一個(gè)打了激素的數(shù)組,什么東西都能往里裝
元組和字符串都是戴上了枷鎖的列表;元組標(biāo)志是( ) 和 ,,其元素不可改變;字符串不能輕易修改
三者共同點(diǎn):
1、都可以通過(guò)索引得到一個(gè)元素
2、默認(rèn)索引值從零開(kāi)始
3、可以通過(guò)分片的方式得到一個(gè)范圍內(nèi)元素的集合
4、有很多共同操作符(重復(fù)操作符、拼接操作符、成員關(guān)系操作符等) - Python 中有很多已經(jīng)定義好的 BIF ,編寫代碼時(shí)很方便
- 經(jīng)常會(huì)把輸出 print() 打成 printf()
轉(zhuǎn)載于:https://www.cnblogs.com/Lclkris/p/8724711.html
總結(jié)
以上是生活随笔為你收集整理的用 Python 实现文件查找的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: http协议讲解
- 下一篇: 加了try的情况下线程中抛出未捕获的异常