日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

用 Python 实现文件查找

發(fā)布時間:2025/6/17 python 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用 Python 实现文件查找 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

用 Python 實現(xiàn)文件查找(BIF實現(xiàn)及隊列實現(xiàn))

(1)利用內(nèi)置函數(shù)實現(xiàn)文件查找

1、功能:返回用戶輸入的文件的絕對路徑

2、設(shè)計思路:

  • (1)用戶輸入在哪個盤進行查找
  • (2)遍歷此盤文件,若為目標文件則輸出
  • (2)無此文件,則輸出錯誤

3、實驗代碼

#查找某個目錄下的目標文件 import os #引入操作系統(tǒng)模塊 import sys #用于標準輸入輸出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('請輸入您要查找哪個盤中的文件(如:D:\\\)') print('請輸入您要查找的文件名:') name = sys.stdin.readline().rstrip() #標準輸入,其中rstrip()函數(shù)把字符串結(jié)尾的空白和回車刪除 answer = search(path,name) if answer == -1:print("查無此文件") else:print(answer)

4、運行結(jié)果展示

1、無此文件

2、有此文件

(2)隊列實現(xiàn)文件查找

1、設(shè)計思路

定義隊列 ALLFiles 存儲所有文件while ALLFiles 不為空if pop 為目錄then 將目錄內(nèi)所有文件入隊elesif pop 為文件then if 為目標文件then breakend 輸出路徑

2、實驗代碼

#查找某個目錄下的目標文件 import os #引入操作系統(tǒng)模塊 import sys #用于標準輸入輸出 import easygui as g #引入圖形用戶界面def search(path1,name):Allfiles = [] #創(chuàng)建隊列Allfiles.append(path1)while len(Allfiles) != 0: #當隊列中為空的時候跳出循環(huán)path =Allfiles.pop(0) #從隊列中彈出首個路徑if os.path.isdir(path): #判斷路徑是否為目錄ALLFilePath =os.listdir(path) #若是目錄,遍歷將里面所有文件入隊for line in ALLFilePath:newPath =path +"\\"+line #形成絕對路徑Allfiles.append(newPath)else: #如果是一個文件,判斷是否為目標文件target = os.path.basename(path)if target == name:return pathreturn -1path = g.enterbox(msg='請輸入文件目錄(如:D:DEV)') name = g.enterbox(msg='請輸入您要查找的文件名:') answer = search(path,name) if answer == -1:g.msgbox("查無此文件",'查找錯誤') else:g.msgbox(answer,'返回路徑')

3、運行結(jié)果

  • 有此文件


  • 無此文件


遇到問題及解決方法

  • 編譯錯誤

    解決方法:os.path.join() 的參數(shù)是 str 型, 添加代碼root = str(root) dirs = str(dirs)
  • 縮進錯誤

    解決方法:為了看看它能輸出多少,我等待了五分鐘,它還沒有結(jié)束;結(jié)果把if name in dirs or name in files:語句重新打了一遍就可以了,應(yīng)該是縮進的錯誤
  • 答案錯誤:把相同目錄下的其他文件也輸出出來了

    解決方法

    os.walk() 的 dirs 參數(shù) 才是返回目錄,將print(os.path.join(root, files))改為print(os.path.join(root, dirs))
  • 答案錯誤:輸出的路徑不是絕對路徑

    解決方法:將for root, dirs, files in os.walk('/'): # / 為根目錄 改為 for root, dirs, files in os.walk(path): # path 為根目錄

心得體會

  • 代碼雖然很短,但是完成它的過程很不容易
  • Python 中 循環(huán)和 if 分支后不用加大括號,但是需要: ,而且縮進要十分注意
  • Python 不用定義類型并不代表變量沒有類型,使用變量前需要先賦值
  • 序列包含 列表、元組和字符串
    列表主要標志是[ ],是一個打了激素的數(shù)組,什么東西都能往里裝
    元組和字符串都是戴上了枷鎖的列表;元組標志是( ) 和 ,,其元素不可改變;字符串不能輕易修改
    三者共同點:
    1、都可以通過索引得到一個元素
    2、默認索引值從零開始
    3、可以通過分片的方式得到一個范圍內(nèi)元素的集合
    4、有很多共同操作符(重復(fù)操作符、拼接操作符、成員關(guān)系操作符等)
  • Python 中有很多已經(jīng)定義好的 BIF ,編寫代碼時很方便
  • 經(jīng)常會把輸出 print() 打成 printf()

轉(zhuǎn)載于:https://www.cnblogs.com/Lclkris/p/8724711.html

總結(jié)

以上是生活随笔為你收集整理的用 Python 实现文件查找的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。