❶ 如何利用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遍歷一個文件夾下的文件給出兩個參數表示時間,如何挑選這兩個時間段之間的文件
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()
❹ 求教python怎麼遍歷指定文件
監控目錄 -- 分兩個部分: 1. 掃描目錄文件, 保持當前狀態數據; 2. 狀態數據的比較
importos
importfnmatch
defgetfileinfo(filename):
(mode,ino,dev,nlink,
uid,gid,size,atime,mtime,ctime)=os.stat(filename)
returndict(
modifytime=mtime,
createtime=ctime,
size=size,
)
classDirectoryMonitor(object):
def__init__(self,path,fnexp="*.*"):
self.path=path
self.fnexp=fnexp
self.files={}
self.scan()
defscan(self):
currentfiles={}
forpath,dirs,filesinos.walk(self.path):
forfinfnmatch.filter(files,self.fnexp):
fullname=os.path.join(path,f)
currentfiles[fullname]=getfileinfo(fullname)
lastfiles=self.files
self.files=currentfiles
returnself.check(lastfiles,currentfiles)
@staticmethod
defcheck(lastfiles,currfiles):
monitor={}
newer={}
forfinset(currfiles)-set(lastfiles):
newer[f]=currfiles[f]
ifnewer:
monitor["newer"]=newer
deleted={}
forfinset(lastfiles)-set(currfiles):
deleted[f]=lastfiles[f]
ifdeleted:
monitor["deleted"]=deleted
changed={}
forfinset(lastfiles)&set(currfiles):
iflastfiles[f]!=currfiles[f]:
changed[f]=currfiles[f]
ifchanged:
monitor["changed"]=changed
returnmonitor
deftester():
importtime
dm=DirectoryMonitor(r"/home/tim/data","*.txt")
time.sleep(20)
m=dm.scan()
ifm:
printm
if__name__=="__main__":
tester()
❺ 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腳本實現一個文件夾的遍歷找到該文件夾下的空文件夾以及帶有一個文件的文件夾
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