当前位置:首页 » 编程语言 » python遍历目录下的文件

python遍历目录下的文件

发布时间: 2023-05-17 12:41:15

1. 如何用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")

  • 欢迎各种不一样的想法~~


2. 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种方法了,如果你还有其他方法,欢迎评论交流。

3. python,如何遍历一个目录,输出所有文件名

importos

defiterbrowse(path):
forhome,dirs,filesinos.walk(path):
forfilenameinfiles:
yieldos.path.join(home,filename)


forfullnameiniterbrowse("/home/bruce"):
printfullname

4. python如何遍历当前目录下所有文件,并输出后缀不为 py的文件名称

#coding=utf-8
'''
Created on 2014-11-14

@author: Neo
'''
import os

def GetFileList(dir, fileList):
newDir = dir
if os.path.isfile(dir):
fileList.append(dir.decode('gbk'))
elif os.path.isdir(dir):
for s in os.listdir(dir):
#如果需要忽略某些文件夹,使用以下代码
#if s == "xxx":
#continue
newDir=os.path.join(dir,s)
GetFileList(newDir, fileList)
return fileList

list = GetFileList('D:\\workspace\\PyDemo\\fas', [])
for e in list:
print e

5. python或者bat怎么遍历文件夹下所有文件和文件夹然后修改后缀

先遍历所有文件:

fromosimportwalk

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

6. 用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) ]

7. python如何实现定时遍历目录,每次把目录下的最新的文件放到列表里

defgetFileListType(path,deal_type_dict):
'定时每分钟调用此函数'
new_file_list=os.listdir(path)
fornew_fileinnew_file_list:
培轿#判断是否是新进来的文件
ifnew_fileindeal_type_dict:
contiune

deal_type_dict[new_file]=0#0表示文件未下一步操作1表示已处理
if__name__=='__main__':
deal_type_dict={}
while1:
time.sleep(60)
getFileListType("A目录")
fordeal_fileindeal_type_dict:
ifdeal_type_dict[deal_file]==0:
肆中塌deal_next_function(deal_file)#新文件裂圆处理操作
deal_type_dict[deal_file]=1#并标识处理过的文件
#如果要定时清理,自己实现一个计时函数清理字典中处理过的文件
if满足条件==1天:
清除字典中=1的记录

8. 如何利用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

9. 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.txt
C:\TDDOWNLOAD b.txt
C:\TDDOWNLOAD\sub1 c.txt
C:\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.txt
C:\TDDOWNLOAD\b.txt
C:\TDDOWNLOAD\sub1\c.txt
C:\TDDOWNLOAD\sub1\d.txt
>>>

'*'为匹配模式,代表匹配所有文件,只有这样才能将子文件夹查出来,以便递归深入,探查下一层的文件。

10. 求通过python实现,在指定目录下遍历所有文件,将以.txt为后缀的文件移动到另一指定目录中

target_dir = 'home/' #假定要拷贝到home目录
x = [ item for item in os.walk('.') ] #os.walk递归地遍历所有子文件夹
#返回的是一个list,list中每一个元素由3个部分:(path, dirs, files)
for path, dirs, files in x:
for file in files:
if file.endswith('.txt'): #找到以txt结尾的,之
shutil.( path+os.sep+file , target_dir )

热点内容
百度扩容脚本 发布:2025-07-16 10:02:29 浏览:47
sqllike字段 发布:2025-07-16 09:58:53 浏览:146
爱肤密码多少钱 发布:2025-07-16 09:52:51 浏览:616
如何访问电脑工作组 发布:2025-07-16 09:39:24 浏览:183
动态优先权算法 发布:2025-07-16 09:39:02 浏览:201
火车wifi密码是多少啊 发布:2025-07-16 09:35:46 浏览:756
sql的视图是从中导出的 发布:2025-07-16 09:31:34 浏览:785
安卓如何打开shell窗口 发布:2025-07-16 09:28:09 浏览:313
华为荣耀备忘录文件夹 发布:2025-07-16 09:23:23 浏览:972
基于特征匹配算法 发布:2025-07-16 09:18:23 浏览:46