欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

目錄路徑函數的操作

李中冰2年前16瀏覽0評論

目錄路徑函數的操作?

1、參數top表示需要遍歷的目錄樹的路徑

2、參數農戶topdown默認是"True",表示首先返回根目錄樹下的文件,然后,再遍歷目錄樹的子目錄。topdown的值為"False",則表示先遍歷目錄樹的子目錄,返回子目錄下的文件,最后返回根目錄下的文件

3、參數oneerror的默認值是"None",表示忽略文件遍歷時產生的錯誤,如果不為空,則提供一個自定義函數提示錯誤信息,后邊遍歷拋出異常

4、函數返回一個元組,該元組有3個元素,這3個元素分別表示'每次遍歷的路徑名,目錄列表和文件列表'

os.walk()實例:

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)) #路徑和文件名連接構成完整路徑

if __name__=='__main__':

path = "C:\\Users\\Administrator\\Desktop\\2017-9-1"

walk(path)

輸出結果:

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\數據采集導入質量統計_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='')

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

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

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

應用1:在一個目錄下面只有文件時可以使用os.listdir()。

比如文件test_file文件中包含三個文件,即:

test_file:

test1.txt

test2.txt

test3.txt

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

>>> import os

>>> path = r'C:\Users\XXN\Desktop\test_file'

>>> for each_file in os.listdir(path):

print(os.path.join(path,each_file))

結果如下:

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

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

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

應用2:當一個目錄下面既有文件又有目錄(文件夾),可使用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)

結果如下:

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))

結果如下:

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

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

思路:

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

2.以讀取的方式打開txt_list中每個路徑的文件,并將每個文件中出現關鍵字的行數以及關鍵字索引保存至一個字典dict_keywords中。

3.按格式輸出。

代碼演示:

import os

def print_keywords(dict_keywords):

keys = dict_keywords.keys()

keys = sorted(keys)

for each in keys:

print('關鍵字出現在第 %s 行,第 %s 個位置。'% (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】中找到關鍵字【%s】' % (each_txt_file, keywords))

if flag in ['YES', 'Yes', 'yes']:

print_keywords(dict_keywors)

keywords = input("請將該腳本放于待查找的文件夾中,請輸入關鍵字:")

flag = input("請問是否需要打印關鍵字【%s】在文件中的具體位置(YES/NO):")

file_search(keywords, flag)

運行結果如下:

總結

以上就是這篇文章的全部內容了