python遍历文件夹下所有文件名中含有指定_Python 遍历目录找出包含指定字符串的文件夹...
題目:編寫一個程序,能在當(dāng)前目錄以及當(dāng)前目錄的所有子目錄下查找文件名包含指定字符串的文件,并打印出相對路徑
題目不難,但是初接觸Python,對函數(shù)不夠熟悉,犯了不少錯誤。總結(jié)如下:
os.path.isdir()方法應(yīng)該傳入帶絕對路徑的文件名,如:r'e:\java',如果只是傳入文件名,如'java',該方法只會在當(dāng)前工作目錄(可以用os.getcwd()查看)下查找有沒有同名文件夾,有則返回true
os.listdir()方法只返回文件名,需要自己用os.path.join()方法拼接出絕對路徑。
os.path.realpath()獲取絕對路徑,該方法會將傳入的文件名與當(dāng)前工作目錄拼接出絕對路徑。如果要使用這個方法,必須先用os.chdir()改變當(dāng)前工作目錄!建議優(yōu)先用os.path.join()。
os.path.relpath()獲取相對路徑,如果不傳入命名關(guān)鍵字參數(shù)start,如start = r'C:\python',則該方法會與根據(jù)當(dāng)前工作目錄計算相對路徑,目錄不同則報錯。
非遞歸版本:
import os
dir = r'e:\java'
specify_str = 'm'
# 搜索指定目錄
results = []
folders = [dir]
for folder in folders :
# 把目錄下所有文件夾存入待遍歷的folders
folders += [os.path.join(folder, x) for x in os.listdir(folder) \
if os.path.isdir(os.path.join(folder, x))]
# 把所有滿足條件的文件的相對地址存入結(jié)果results
results += [os.path.relpath(os.path.join(folder, x), start = dir) \
for x in os.listdir(folder) \
if os.path.isfile(os.path.join(folder, x)) and specify_str in x]
# 輸出結(jié)果
for result in results:
print(result)
print('找到 %s 個結(jié)果!' % len(results))
輸出如下:
E:\java\Combination.class
E:\java\Combination.java
E:\java\Combination1.class
E:\java\Combination1.java
E:\java\FrameTest$1.class
E:\java\FrameTest.class
E:\java\FrameTest.java
E:\java\game.jar
E:\java\getNum.java
E:\java\Java學(xué)習(xí)筆記.markdown
E:\java\Jsq$CommandAction.class
E:\java\map0.txt
E:\java\MOMNum.java
E:\java\MyComp.class
E:\java\NumRectangle.class
E:\java\NumRectangle.java
E:\java\Prime
E:\java\Prime.class
E:\java\Prime.java
E:\java\RandomCharNum.class
E:\java\RandomCharNum.java
E:\java\Sum.class
E:\java\Sum.java
E:\java\SuoDemo.class
E:\java\SuoDemo.java
E:\java\TestFrame.class
E:\java\HomeWork\HomeWork.java
E:\java\HomeWork\Thumbs.db
E:\java\m個數(shù)中取k個數(shù)\Combination.class
E:\java\m個數(shù)中取k個數(shù)\Combination.java
E:\java\m個數(shù)中取k個數(shù)\Combination1.class
E:\java\m個數(shù)中取k個數(shù)\Combination1.java
E:\java\m個數(shù)中取k個數(shù)\Combination2.java
E:\java\五子棋\GameFrame.class
E:\java\五子棋\GameFrame.java
E:\java\以往習(xí)作\KingTetris$timerListener.class
E:\java\小成圖排盤\EightDiagram.java
E:\java\年份轉(zhuǎn)干支\HeavenlyStem.class
E:\java\年份轉(zhuǎn)干支\HeavenlyStem.java
E:\java\打包\Game$1.class
E:\java\打包\Game$2.class
E:\java\打包\Game$MyCanvas.class
E:\java\打包\Game.class
找到43個滿足條件的文件。
版權(quán)聲明:本文為博主原創(chuàng)文章,未經(jīng)博主允許不得轉(zhuǎn)載。
總結(jié)
以上是生活随笔為你收集整理的python遍历文件夹下所有文件名中含有指定_Python 遍历目录找出包含指定字符串的文件夹...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 树莓派python gpio 模仿iic
- 下一篇: python开发自己的工具包_爬虫开发p