python 文件夹遍历

tech2024-12-19  5

今天开始学文件和文件夹的操作啦

 

因为涉及到一些库需要安装,所以呢先简单说下pycharm下面安装库的流程:

点击pycharm左上角File——Settings——Project:XXX——Python Interpreter——点击最右侧的+号

——搜索需要安装的库名称——点击左下角的Install Package。等待几秒就完成啦

 

文件操作咱们安装个pandas和xlrd。

 

先来个最简单的例子,因为涉及到文件夹操作,所以需要用到os库

import pandas as pd import os os.chdir('E:\mypypy') 数据 = pd.read_excel('demo.xlsx') print (数据)

然后就能把EXCEL里面的内容打印出来啦

 

一、利用os.path.join连接文件夹和子文件夹

比如说 在“E:\python测试数据\Excel文件”文件夹内有个demo.xlsx,我可以这样进行连接:

import pandas as pd import os p1 = 'e:\python测试数据' p2 = 'Excel文件' mypath = os.path.join(p1,p2) os.chdir(mypath) print(pd.read_excel('demo.xlsx'))

通过os.path.join将路径用名称连接在一起,然后就和上面的一样操作啦

 

二、遍历所有文件

os.listdir(path)能将文件夹内所有文件和文件夹都进行显示

os.path.isdir()能判断是否是文件夹

根据这个,咱们就可以进行遍历啦~

import os def bianli(fld): for f in os.listdir(fld): if os.path.isdir(f): p = os.path.join(fld,f) os.chdir(p) bianli(p) else: print (f) fld = 'E:\测试数据' os.chdir(fld) bianli(fld)

 

解释一下主要思路就是:

1.利用os.chdir进入到fld文件夹下面;

2.利用os.listdir列出fld文件夹下的所有元素

3.如果里面的元素是文件夹,就再把该元素作为参数传递给自己

4.如果不是文件夹,就打印文件名啦

 

但是呢python3.5版本中,有os.scandir()方法,可以直接遍历…所以更简单,比上面少了些流程,具体用法如下:

import os fld = 'E:\测试数据' a = 0 b = 0 def bianli(fld): global a global b for f in os.scandir(fld): if os.path.isdir(f): a += 1 bianli(f) else: b += 1 print (f.name) print(f'遍历完毕,一个{a}个文件夹,{b}个文件。') bianli(fld)

 

主要思路:

1.利用os.scandir直接遍历fld文件夹下面所有文件;

2.如果里面的元素是文件夹,就再把该元素作为参数传递给自己

3.如果不是文件夹,就打印文件名啦

 

三、查看文件的属性

os.stat(f)

用法如下:

import os file = "E:\python测试数据\Excel文件" for f in os.scandir(file): print(f.name,f.stat())

输出结果:

demo.xlsx os.stat_result(st_mode=33206, st_ino=0, st_dev=0, st_nlink=0, st_uid=0, st_gid=0, st_size=9693, st_atime=1599135294, st_mtime=1599135294, st_ctime=1599134832)

稍微解释一下:

os.stat_result:属性的内容

st_size=9693:这个文件9693字节,也就是9693b,等于9693/1024=9.46kb(一般来说速度单位换算是1000,容量单位换算是用1024来计算啦)

st_atime=1599135294

st_mtime=1599135294

st_ctime=1599134832 

这三个一起说一下。atime就是文件最近访问时间,mtime就是最近修改时间,ctime就是创建时间,可以理解为access,modify,create~后面的一长串数字呢就是秒数啦,经过一顿换算,发现大概是50年的样子,现在呢是2020年9月,也就是说时间大概是从1970年开始计算(实际情况是python起始时间是1970-01-01 08:00:00)。

上面的时间还是太麻烦啦,插播一下时间转换~

import datetime as dt mydt = dt.datetime.fromtimestamp(1599135294) print (mydt)

输出结果:2020-09-03 20:14:54

如果需要显示个性化年月日,这样改一下就可以,就不多介绍啦

print (mydt.year,mydt.month,mydt.day)

 

 

最新回复(0)