今天开始学文件和文件夹的操作啦
因为涉及到一些库需要安装,所以呢先简单说下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)