python循环文件夹下的全部文件(python循环文件夹下的全部文件怎

http://www.itjxue.com  2023-03-29 13:16  来源:未知  点击次数: 

如何利用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中如何遍历指定目录下的所有文件?

例如:在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?copy

import??xdrlib?,sys

import?xlrd

def?open_excel(file="C:/Users/flyminer/Desktop/新建?Microsoft?Excel?工作表.xlsx"):

data?=?xlrd.open_workbook(file)

return?data

#根据索引获取Excel表格中的数据???参数:file:Excel文件路径?????colnameindex:表头列名所在行的所以??,by_index:表的索引

def?excel_table_byindex(file="C:/Users/flyminer/Desktop/新建?Microsoft?Excel?工作表.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?=[]

for?rownum?in?range(1,nrows):

row?=?table.row_values(rownum)

if?row:

app?=?{}

for?i?in?range(len(colnames)):

app[colnames[i]]?=?row[i]

list.append(app)

return?list

#根据名称获取Excel表格中的数据???参数:file:Excel文件路径?????colnameindex:表头列名所在行的所以??,by_name:Sheet1名称

def?excel_table_byname(file="C:/Users/flyminer/Desktop/新建?Microsoft?Excel?工作表.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?=[]

for?rownum?in?range(1,nrows):

row?=?table.row_values(rownum)

if?row:

app?=?{}

for?i?in?range(len(colnames)):

app[colnames[i]]?=?row[i]

list.append(app)

return?list

def?main():

tables?=?excel_table_byindex()

for?row?in?tables:

print(row)

tables?=?excel_table_byname()

for?row?in?tables:

print(row)

if?__name__=="__main__":

main()

最后一句是重点,所以这里也给代码人点个赞!

最后一句让代码里的函数都可以被复用,简单地说:假设文件名是a,在程序中import a以后,就可以用a.excel_table_byname()和a.excel_table_byindex()这两个超级好用的函数了。

2.然后是遍历文件夹取得excel文件以及路径:,原创代码如下:

[python]?view plain?copy

import?os

import?xlrd

import?test_wy

xpath="E:/唐伟捷/电力/电力系统总文件夹/舟山电力"

xtype="xlsx"

typedata?=?[]

name?=?[]

raw_data=[]

file_path=[]

def?collect_xls(list_collect,type1):

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

for?each_element?in?list_collect:

if?isinstance(each_element,list):

collect_xls(each_element,type1)

elif?each_element.endswith(type1):

typedata.insert(0,each_element)

return?typedata

#读取所有文件夹中的xls文件

def?read_xls(path,type2):

#遍历路径文件夹

for?file?in?os.walk(path):

for?each_list?in?file[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文件路径并读取数据

for?evey_name?in?all_xls:

xls_data?=?xlrd.open_workbook(evey_name)

for?each_sheet?in?xls_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,":Data?has?been?done.")

return?raw_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使用for循环依次打开该目录下的各文件

import?os

path?=?r"F:\Python\第一周作业\task"

otherpath=r"F:\Python\其它目录"

for?filename?in?os.listdir(path):

????print(path,filename)

????fullname=os.path.join(path,filename)

????if?os.path.isfile(fullname):????????

??????????othername=os.path.join(otherpath,filename)??

??????????otherfile=open(othername,'wb')

??????????for?line?in?open(fullname,'rb'):

??????????????for?c?in?line:

??????????????????if?not?c.isdigit():otherfile.write(c)

??????????otherfile.close()

(责任编辑:IT教学网)

更多

推荐浏览器文章