亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python使用os.listdir()和os.walk()獲取文件路徑與文件下所有目錄的方法

 更新時(shí)間:2019年04月01日 11:53:20   作者:sxf_0123  
今天小編就為大家分享一篇關(guān)于Python使用os.listdir()和os.walk()獲取文件路徑與文件下所有目錄的方法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧

在python3.6版本中去掉了os.path.walk()函數(shù)

os.walk()

函數(shù)聲明:walk(top,topdown=True,oneerror=None)

  • 1、參數(shù)top表示需要遍歷的目錄樹的路徑
  • 2、參數(shù)農(nóng)戶topdown默認(rèn)是"True",表示首先返回根目錄樹下的文件,然后,再遍歷目錄樹的子目錄。topdown的值為"False",則表示先遍歷目錄樹的子目錄,返回子目錄下的文件,最后返回根目錄下的文件
  • 3、參數(shù)oneerror的默認(rèn)值是"None",表示忽略文件遍歷時(shí)產(chǎn)生的錯(cuò)誤,如果不為空,則提供一個(gè)自定義函數(shù)提示錯(cuò)誤信息,后邊遍歷拋出異常
  • 4、函數(shù)返回一個(gè)元組,該元組有3個(gè)元素,這3個(gè)元素分別表示'每次遍歷的路徑名,目錄列表和文件列表'

os.walk()實(shí)例:

import os
def walk(path):
  if not os.path.exists(path):
    return -1
  for root,dirs,names in os.walk(path):
    for filename in names:
      print(os.path.join(root,filename)) #路徑和文件名連接構(gòu)成完整路徑
if __name__=='__main__':
  path = "C:\\Users\\Administrator\\Desktop\\2017-9-1"
  walk(path)

輸出結(jié)果:

C:\Users\Administrator\Desktop\2017-9-1\2017-9-1.txt
C:\Users\Administrator\Desktop\2017-9-1\2017-9-1storage.txt
C:\Users\Administrator\Desktop\2017-9-1\apk.conf
C:\Users\Administrator\Desktop\2017-9-1\數(shù)據(jù)采集導(dǎo)入質(zhì)量統(tǒng)計(jì)_2017-09-01.docx
C:\Users\Administrator\Desktop\2017-9-1\test1\2017-9-1.txt
C:\Users\Administrator\Desktop\2017-9-1\test2\2017-9-1.txt

1.os.listdir(path='')

其中參數(shù)path為需要列出的目錄路徑。該函數(shù)返回指定的文件夾包含的文件或文件夾的名字的列表。

2.walk(top, topdown=True, onerror=None, followlinks=False)

os.walk(path)返回三個(gè)值:parent, dirnames, filenames,分別表示path的路徑、path路徑下的文件夾的名字和path路徑下文件夾以外的其他文件。

應(yīng)用1:在一個(gè)目錄下面只有文件時(shí)可以使用os.listdir()。

比如文件test_file文件中包含三個(gè)文件,即:

test_file:
         test1.txt
         test2.txt
         test3.txt

可以使用如下代碼獲取每個(gè)文件的絕對路徑:

>>> import os
>>> path = r'C:\Users\XXN\Desktop\test_file'
>>> for each_file in os.listdir(path):
 print(os.path.join(path,each_file))

結(jié)果如下:

C:\Users\XXN\Desktop\test_file\test1.txt
C:\Users\XXN\Desktop\test_file\test2.txt
C:\Users\XXN\Desktop\test_file\test3.txt

應(yīng)用2:當(dāng)一個(gè)目錄下面既有文件又有目錄(文件夾),可使用os.walk()讀取里面所有文件。

比如文件test_file中既包含文件也包含文件夾:

Test_file:
        file1:
             test1.txt
             test2.txt
             test3.txt
        file2:
             test1.txt
             test2.txt
             test3.txt
        test1.txt
        test2.txt
        test3.txt

使用os.walk()可獲得:

>>> import os
>>> path = r'C:\Users\XXN\Desktop\test_file'
>>> for parent,dirnames,filenames in os.walk(path):
 print(parent,dirnames,filenames)

結(jié)果如下:

C:\Users\XXN\Desktop\test_file ['file1', 'file2'] ['test1.txt', 'test2.txt', 'test3.txt']
C:\Users\XXN\Desktop\test_file\file1 [] ['test1.txt', 'test2.txt', 'test3.txt']
C:\Users\XXN\Desktop\test_file\file2 [] ['test1.txt', 'test2.txt', 'test3.txt']

  • parent:列出了目錄路徑下面所有存在的目錄的名稱
  • dirnames:文件夾名
  • filenames:列出了目錄路徑下面所有文件的名稱

通過下面代碼可獲得給定路徑下所有的文件路徑:

>>> import os
>>> path = r'C:\Users\XXN\Desktop\test_file'
>>> for parent,dirnames,filenames in os.walk(path):
 for filename in filenames:
 print(os.path.join(parent,filename))

結(jié)果如下:

C:\Users\XXN\Desktop\test_file\test1.txt
C:\Users\XXN\Desktop\test_file\test2.txt
C:\Users\XXN\Desktop\test_file\test3.txt
C:\Users\XXN\Desktop\test_file\file1\test1.txt
C:\Users\XXN\Desktop\test_file\file1\test2.txt
C:\Users\XXN\Desktop\test_file\file1\test3.txt
C:\Users\XXN\Desktop\test_file\file2\test1.txt
C:\Users\XXN\Desktop\test_file\file2\test2.txt
C:\Users\XXN\Desktop\test_file\file2\test3.txt

應(yīng)用3:編寫一個(gè)程序,用戶輸入關(guān)鍵字,查找當(dāng)前文件夾內(nèi)(如果當(dāng)前文件夾內(nèi)包含文件夾,則進(jìn)入文件夾繼續(xù)搜索)所有含有該關(guān)鍵字的文本文件(.txt后綴),要求顯示該文件所在的位置以及關(guān)鍵字在文件中的具體位置(第幾行第幾個(gè)字符)

思路:

1.先把當(dāng)前文件夾下的.txt文件以及當(dāng)前文件包含的子文件夾中的.txt文件的路徑全部保存至一個(gè)txt_list列表中;

2.以讀取的方式打開txt_list中每個(gè)路徑的文件,并將每個(gè)文件中出現(xiàn)關(guān)鍵字的行數(shù)以及關(guān)鍵字索引保存至一個(gè)字典dict_keywords中。

3.按格式輸出。

代碼演示:

import os
def print_keywords(dict_keywords):
  keys = dict_keywords.keys()
  keys = sorted(keys)
  for each in keys:
    print('關(guān)鍵字出現(xiàn)在第 %s 行,第 %s 個(gè)位置。'% (each, str(dict_keywords[each])))
def line_keywords(line, keywords):
  key_index = []
  start = line.find(keywords)
  while start!=-1:
    key_index.append(start+1)
    start = line.find(keywords, start+1)
  return key_index    
def file_keywords(filename, keywords):
  f = open(filename,'r')
  line = 0
  dict_keywords = dict()
  for each_line in f:
    line +=1
    if keywords in each_line:
        key_index = line_keywords(each_line, keywords)
        dict_keywords[line]= key_index
  f.close()
  return dict_keywords
def file_search(keywords, flag):
  all_files = os.walk(os.getcwd())
  txt_list = []
  for each in all_files:
    for filename in each[2]:
      if os.path.splitext(filename)[1] == '.txt':
        txt_list.append(os.path.join(each[0],filename))
  for each_txt_file in txt_list:
    dict_keywors = file_keywords(each_txt_file, keywords)
    print('====================================================')
    print('在文件【%s】中找到關(guān)鍵字【%s】' % (each_txt_file, keywords))
    if flag in ['YES', 'Yes', 'yes']:
       print_keywords(dict_keywors)
keywords = input("請將該腳本放于待查找的文件夾中,請輸入關(guān)鍵字:")
flag = input("請問是否需要打印關(guān)鍵字【%s】在文件中的具體位置(YES/NO):")
file_search(keywords, flag)

運(yùn)行結(jié)果如下:

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接

相關(guān)文章

  • Python中的pyecharts庫使用總結(jié)

    Python中的pyecharts庫使用總結(jié)

    這篇文章主要介紹了Python中的pyecharts庫使用總結(jié),Pyecharts 提供了一個(gè)簡單而直觀的 API 接口,使得使用者無需了解復(fù)雜的 JavaScript 語法,即可通過 Python 代碼實(shí)現(xiàn)高度定制化的圖表設(shè)計(jì),需要的朋友可以參考下
    2023-12-12
  • pycharm調(diào)試時(shí)顯示圖片問題的解決

    pycharm調(diào)試時(shí)顯示圖片問題的解決

    這篇文章主要介紹了pycharm調(diào)試時(shí)顯示圖片問題的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • 使用python+pygame開發(fā)消消樂游戲附完整源碼

    使用python+pygame開發(fā)消消樂游戲附完整源碼

    消消樂小游戲相信大家都玩過,大人小孩都喜歡玩的一款小游戲,那么基于程序是如何實(shí)現(xiàn)的呢?今天帶大家,用python+pygame來實(shí)現(xiàn)一下這個(gè)花里胡哨的消消樂小游戲功能,感興趣的朋友一起看看吧
    2021-06-06
  • Python賦值語句后逗號的作用分析

    Python賦值語句后逗號的作用分析

    這篇文章主要介紹了Python賦值語句后逗號的作用,實(shí)例分析了Python賦值語句加入逗號實(shí)現(xiàn)類型轉(zhuǎn)換的技巧,需要的朋友可以參考下
    2015-06-06
  • 使用tensorflow將圖片灰度化以及遇到的坑解決

    使用tensorflow將圖片灰度化以及遇到的坑解決

    這篇文章主要介紹了使用tensorflow將圖片灰度化以及遇到的坑解決,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • Python整數(shù)與Numpy數(shù)據(jù)溢出問題解決

    Python整數(shù)與Numpy數(shù)據(jù)溢出問題解決

    這篇文章主要介紹了Python 的整數(shù)與 Numpy 的數(shù)據(jù)溢出,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • python網(wǎng)絡(luò)編程之?dāng)?shù)據(jù)傳輸U(kuò)DP實(shí)例分析

    python網(wǎng)絡(luò)編程之?dāng)?shù)據(jù)傳輸U(kuò)DP實(shí)例分析

    這篇文章主要介紹了python網(wǎng)絡(luò)編程之?dāng)?shù)據(jù)傳輸U(kuò)DP實(shí)現(xiàn)方法,實(shí)例分析了Python基于UDP協(xié)議的數(shù)據(jù)傳輸實(shí)現(xiàn)方法,需要的朋友可以參考下
    2015-05-05
  • Django自關(guān)聯(lián)實(shí)現(xiàn)多級聯(lián)動(dòng)查詢實(shí)例

    Django自關(guān)聯(lián)實(shí)現(xiàn)多級聯(lián)動(dòng)查詢實(shí)例

    這篇文章主要介紹了Django自關(guān)聯(lián)實(shí)現(xiàn)多級聯(lián)動(dòng)查詢實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • python爬蟲入門教程--快速理解HTTP協(xié)議(一)

    python爬蟲入門教程--快速理解HTTP協(xié)議(一)

    http協(xié)議是互聯(lián)網(wǎng)里面最重要,最基礎(chǔ)的協(xié)議之一,我們的爬蟲需要經(jīng)常和http協(xié)議打交道。下面這篇文章主要給大家介紹了關(guān)于python爬蟲入門之快速理解HTTP協(xié)議的相關(guān)資料,文中介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-05-05
  • 教你使用Python提取視頻中的美女圖片

    教你使用Python提取視頻中的美女圖片

    這篇文章主要介紹了教你使用Python提取視頻中的美女圖片,使用?Python?寫一個(gè)逐幀無損保存視頻畫面的小腳本,大概分為三個(gè)步驟,詳細(xì)過程跟隨小編一起看看吧
    2022-04-04

最新評論