當前位置:首頁 » 文件管理 » python文件夾遍歷

python文件夾遍歷

發布時間: 2023-01-17 14:39:28

python 遞歸遍歷文件夾

沒有仔細看,但你的第一句就有錯
def distinguish_file(user_paht):
參數應為user_path

Ⅱ Python中如何遍歷指定目錄下的所有文件

例如:在C:\TDDOWNLOAD目錄下有a.txt、b.txt兩個文件,另有\sub1子文件夾,C:\TDDOWNLOAD\sub1下又有c.txt、d.txt兩個文件。
1.
os.walk
os.walk()返回一個三元素的tuple:當前路徑、子文件夾名稱、文件列表。>>>
import
os>>>
def
fun(
path
):...
for
root,
dirs,
files
in
os.walk(
path
):...
for
fn
in
files:...
print
root,
fn...
>>>
fun(
r'C:\TDDOWNLOAD'
)C:\TDDOWNLOAD
a.txtC:\TDDOWNLOAD
b.txtC:\TDDOWNLOAD\sub1
c.txtC:\TDDOWNLOAD\sub1
d.txt>>>
2.
glob.glob
glob.glob()只接受一個參數,這個參數既代有路徑,又代有匹配模式,返回值為一個列表。注意,glob.glob()無法直接穿透子文件夾,需要自己處理:>>>
def
fun(
path
):...
for
fn
in
glob.glob(
path
+
os.sep
+
'*'
):
#
'*'代表匹配所有文件...
if
os.path.isdir(
fn
):
#
如果結果為文件夾...
fun(
fn
)
#
遞歸...
else:...
print
fn...
>>>
fun(
r'C:\TDDOWNLOAD'
)C:\TDDOWNLOAD\a.txtC:\TDDOWNLOAD\b.txtC:\TDDOWNLOAD\sub1\c.txtC:\TDDOWNLOAD\sub1\d.txt>>>
'*'為匹配模式,代表匹配所有文件,只有這樣才能將子文件夾查出來,以便遞歸深入,探查下一層的文件。

Ⅲ 如何用python遍歷文件夾下的所有excel文件

大數據處理經常要用到一堆表格,然後需要把數據導入一個list中進行各種演算法分析,簡單講一下自己的做法:

1.如何讀取excel文件

網上的版本很多,在xlrd模塊基礎上,找到一些源碼

[python]view plain

  • importxdrlib,sys

  • importxlrd

  • defopen_excel(file="C:/Users/flyminer/Desktop/新建MicrosoftExcel工作表.xlsx"):

  • data=xlrd.open_workbook(file)

  • returndata

  • #根據索引獲取Excel表格中的數據參數:file:Excel文件路徑colnameindex:表頭列名所在行的所以,by_index:表的索引

  • defexcel_table_byindex(file="C:/Users/flyminer/Desktop/新建MicrosoftExcel工作表.xlsx",colnameindex=0,by_index=0):

  • data=open_excel(file)

  • table=data.sheets()[by_index]

  • nrows=table.nrows#行數

  • ncols=table.ncols#列數

  • colnames=table.row_values(colnameindex)#某一行數據

  • list=[]

  • forrownuminrange(1,nrows):

  • row=table.row_values(rownum)

  • ifrow:

  • app={}

  • foriinrange(len(colnames)):

  • app[colnames[i]]=row[i]

  • list.append(app)

  • returnlist

  • #根據名稱獲取Excel表格中的數據參數:file:Excel文件路徑colnameindex:表頭列名所在行的所以,by_name:Sheet1名稱

  • defexcel_table_byname(file="C:/Users/flyminer/Desktop/新建MicrosoftExcel工作表.xlsx",colnameindex=0,by_name=u'Sheet1'):

  • data=open_excel(file)

  • table=data.sheet_by_name(by_name)

  • nrows=table.nrows#行數

  • colnames=table.row_values(colnameindex)#某一行數據

  • list=[]

  • forrownuminrange(1,nrows):

  • row=table.row_values(rownum)

  • ifrow:

  • app={}

  • foriinrange(len(colnames)):

  • app[colnames[i]]=row[i]

  • list.append(app)

  • returnlist

  • defmain():

  • tables=excel_table_byindex()

  • forrowintables:

  • print(row)

  • tables=excel_table_byname()

  • forrowintables:

  • print(row)

  • if__name__=="__main__":

  • main()

  • 最後一句是重點,所以這里也給代碼人點個贊!
  • 最後一句讓代碼里的函數都可以被復用,簡單地說:假設文件名是a,在程序中import a以後,就可以用a.excel_table_byname()和a.excel_table_byindex()這兩個超級好用的函數了。

    2.然後是遍歷文件夾取得excel文件以及路徑:,原創代碼如下:

    [python]view plain

  • importos

  • importxlrd

  • importtest_wy

  • xpath="E:/唐偉捷/電力/電力系統總文件夾/舟山電力"

  • xtype="xlsx"

  • typedata=[]

  • name=[]

  • raw_data=[]

  • file_path=[]

  • defcollect_xls(list_collect,type1):

  • #取得列表中所有的type文件

  • foreach_elementinlist_collect:

  • ifisinstance(each_element,list):

  • collect_xls(each_element,type1)

  • elifeach_element.endswith(type1):

  • typedata.insert(0,each_element)

  • returntypedata

  • #讀取所有文件夾中的xls文件

  • defread_xls(path,type2):

  • #遍歷路徑文件夾

  • forfileinos.walk(path):

  • foreach_listinfile[2]:

  • file_path=file[0]+"/"+each_list

  • #os.walk()函數返回三個參數:路徑,子文件夾,路徑下的文件,利用字元串拼接file[0]和file[2]得到文件的路徑

  • name.insert(0,file_path)

  • all_xls=collect_xls(name,type2)

  • #遍歷所有type文件路徑並讀取數據

  • forevey_nameinall_xls:

  • xls_data=xlrd.open_workbook(evey_name)

  • foreach_sheetinxls_data.sheets():

  • sheet_data=test_wy.excel_table_byname(evey_name,0,each_sheet.name)

  • #請參考讀取excel文件的代碼

  • raw_data.insert(0,sheet_data)

  • print(each_sheet.name,":Datahasbeendone.")

  • returnraw_data

  • a=read_xls(xpath,xtype)

  • print("Victory")

  • 歡迎各種不一樣的想法~~


Ⅳ python遍歷目錄就是這么簡單

有時我們有列出目錄下都有哪些文件和子目錄的需求,這種情況是有現成命令可用的,比如windows下的dir命令,linux下的ls命令都可以,那我們用python代碼怎麼實現呢?

我們利用python豐富的庫很容易就能實現一個簡易版本,下面我們就用4種方法來實現它。

一、使用os.popen

os.popen工作原理是新建一個子進程,然後用這個子進程執行命令,父進程與子進程間通過管道進行通信。

根據調用popen時的傳參,我們可以通過管道讀取子進程的輸出也可以向子進程寫數據,默認是讀取子進程的輸出。

從以上描述可以看出popen是非常通用的,不是只能用於我們這個例子哦。

那我們開始用它實現我們的需求吧,代碼如下:

哈哈,是不是很簡單,這種方式雖然能達到目的但其實並不是我們想要的,我們本來就是要實現ls的,結果調用了ls,所以嚴格意義上來說我們並沒有實現ls,那讓我們繼續往下看其它方法吧,嘿嘿。

二、使用glob.glob

glob可以根據你使用的通配符對文件進行匹配,利用這個特性我們可以列出當前目錄下都有哪些文件和子目錄,如下代碼:

三、使用os.listdir

os.listdir同樣可以列出某個目錄下都有哪些文件和子目錄,如下代碼:

四、使用os.walk

os.walk在遍歷目錄方面非常強大,它不但可以遍歷你需要的目錄,也可以遞歸遍歷子目錄且遞歸的深度可以用代碼控制,下面讓我們分別看下怎麼遍歷整個目錄樹以及怎麼控制深度吧。

os.walk默認是遍歷整個目錄樹的,如下代碼就會遞歸列印出當前目錄下所有文件:

那我們怎麼控制遍歷的深度,比如只遍歷n層呢?其實很簡單,只需要定義一個深度變數,然後到達n後跳出循環即可,如下代碼就只遍歷1層:

至此我們已經寫完4種方法了,如果你還有其他方法,歡迎評論交流。

Ⅳ Python遍歷文件夾並 改所有文件的後綴名

importos
importshutil


root='F:\python2'
forrt,dirs,filesinos.walk(root):
forfinfiles:
fn=os.path.join(rt,f)
nfn=fn.replace('.txt','.py').
ifsrcinfnandfn!=nfn:
shutil.move(fn,nfn)

Ⅵ 如何利用Python遍歷文件夾

import os
import os.path
rootdir = 「d:\data」 # 指明被遍歷的文件夾

for parent,dirnames,filenames in os.walk(rootdir): #三個參數:分別返回1.父目錄 2.所有文件夾名字(不含路徑) 3.所有文件名字
for dirname in dirnames: #輸出文件夾信息
print "parent is:" + parent
print "dirname is" + dirname

for filename in filenames: #輸出文件信息
print "parent is": + parent
print "filename is:" + filename
print "the full name of the file is:" + os.path.join(parent,filename) #輸出文件路徑信息

#windows下為:d:\data\query_text\EL_00154

Ⅶ 我想用python腳本實現一個文件夾的遍歷找到該文件夾下的空文件夾以及帶有一個文件的文件夾

importos
arr=[]
#os.walk()返回三個數組main當前目錄名sub下級目錄名name下級文件名
formain,sub,nameinos.walk("C:Intel"):
iflen(sub)==0andlen(name)<2:
arr.append(main)
print(arr)

Ⅷ python或者bat怎麼遍歷文件夾下所有文件和文件夾然後修改後綴

先遍歷所有文件:

fromosimportwalk

f=[]
for(dirpath,dirnames,filenames)inwalk(mypath):
f.extend(filenames)
break

Ⅸ 用python遍歷一個文件夾下的文件給出兩個參數表示時間,如何挑選這兩個時間段之間的文件

listdir( path )列出當前path路徑下的所有文件
getctime( file ) 得到file的創建時間(秒),另外getmtime得到文件的修改
gmttime( seconds ) 把getctime得到的秒數轉換為一個gmtime結構體
datetime()構造日期函數,把gmtime結構體的內容穿進去,就得到了可比較時間的datetime對象
[ file for item,file in listdate if (starttime < item < endtime) ]
把滿足 starttime < item < endtime 條件的文件選取出來就可以了。

from time import gmttime
from datetime import datetime
from os.path import getctime
form os import listdir

def listdir(path, starttime, endtime ):
if not isinstance(starttime, datetime)
raise TypeError
if not isinstance(endtime, datetime)
raise TypeError
if starttime > endtime:
starttime, endtime = endtime, starttime
listtime = [ (gmtime(getctime(file)),file) for file in listdir( path ) ]
listdate = ([datetime( t.tm_year, t.tm_mon, t.tm_mday, t.tm_hour, t.tm_min, t.tm_sec ),file) for t, file in listtime]
return [ file for item,file in listdate if (starttime < item < endtime) ]

Ⅹ python如何遍歷文件夾然後生成md5

importos,hashlib

defgetlistdir(path):
try:#如果path是一個文件的完整名稱,os.listdir會拋出錯誤
fl=os.listdir(path)
exceptExceptionase:
fl=[]
finally:
returnfl

defgetallfile(path):
allfile=[]
fl=getlistdir(path)
iflen(fl)!=0:
fl=list(map(lambdax:path+'\'+x,fl))
allfile=allfile+fl
forfinfl:
allfile=allfile+getallfile(f)
returnallfile

defmakemd5(stri):
md5=hashlib.md5()
md5.update(stri.encode('utf-8'))
returnmd5.hexdigest()

defmain():
myfilelist=getallfile('.')#獲取當前文件'.'中的所有文件和文件夾名list
myfilestr='|'.join(myfilelist)#文件list轉換為以'|'分隔的字元串
print(myfilestr)#顯示要進行md5摘要加密的字元
print("md5=",makemd5(myfilestr))#計算並顯示md5碼

main()

熱點內容
關機命令c語言 發布:2025-09-09 16:52:54 瀏覽:676
建立網站需要什麼伺服器 發布:2025-09-09 16:30:11 瀏覽:258
為什麼安卓手機不能真正關閉後台 發布:2025-09-09 16:20:04 瀏覽:367
androidsuroot 發布:2025-09-09 16:01:29 瀏覽:349
原神密碼哪裡修改 發布:2025-09-09 16:01:20 瀏覽:228
安卓模擬器存檔放哪裡 發布:2025-09-09 15:38:56 瀏覽:112
編程貓太黑 發布:2025-09-09 15:20:19 瀏覽:854
資料庫答辯問題 發布:2025-09-09 15:17:54 瀏覽:820
安卓70可以玩什麼大型游戲 發布:2025-09-09 15:15:40 瀏覽:557
ideapython 發布:2025-09-09 14:49:42 瀏覽:218