遍历文件夹,读取时间命名的文件
2017-03-28 16:17
429 查看
平常用到的一些数据文件,经常以时间命名,如“170128.csv”、“170328.csv”等,但是我们想分析一段时间的数据时就需要按照时间选取文件,这时候按170128的数值直接加减并不合适,因为没有170150这类的时间,因此需要按时间戳的加减来选择,时间戳的形式一般为“1/6/17”、“17-01-06”等,与我们存数据的格式不同,因此,我们需要完成时间戳与时间字符串之间的转换。
下面以python为例来说明(其他软件读取文件的思想类似,只是采用的函数不同):
1、起止时间为字符串:
#文件按年、月分文件夹存储文件,如170128.csv文件的路径为...\2017\1\170128.csv
#读取文件后将所有csv文件拼接
import pandas as pd
from datetime import datetime
import os
Startday='170106' #起始时间
Endday='170207' #终止时间
start=datetime.strptime(Startday,'%y%m%d') #转换为datetime格式的时间戳
end=datetime.strptime(Endday,'%y%m%d')
Frame=pd.DataFrame()
for year in range(start.year,end.year+1):
for month in range(start.month,end.month+1):
pathname= os.path.join(u'Z:\data',Item_num,Car_num,str(year),str(month))#文件夹路径名称
filenames=os.listdir(pathname) #遍历文件夹,得到该文件夹下的文件及子文件夹名字
for i in filenames:
if (datetime.strptime(i[11:17],'%y%m%d')-start).days>=0 and (datetime.strptime(i[11:17],'%y%m%d')-end).days<=0: #选取起止时间段内的文件
filepath=os.path.join(pathname,i) #得到文件的路径
F=pd.read_csv(filepath,skiprows=1,encoding="gbk",engine='python')#读取csv文件
Frame=pd.concat([Frame,F])
2、起止时间为datetime:
import pandas as pd
from datetime import datetime
import os
Startday=datetime(2017,1,6,0,0,0)#起始时间
Endday=datetime(2017,2,7,0,0,0)#终止时间#
Frame=pd.DataFrame()
for year in range(Startday.year,Endday.year+1):
for month in range(Startday.month,Endday.month+1):
pathname= os.path.join(u'Z:\data',str(year),str(month))
filenames=os.listdir(pathname)
for i in filenames:
if datetime.strptime(i[11:17],'%y%m%d')>=Startday and datetime.strptime(i[11:17],'%y%m%d')<=Endday:
filepath=os.path.join(pathname,i)
F=pd.read_csv(filepath,skiprows=1,encoding="gbk",engine='python')#读取csv文件
Frame=pd.concat([Frame,F])
下面以python为例来说明(其他软件读取文件的思想类似,只是采用的函数不同):
1、起止时间为字符串:
#文件按年、月分文件夹存储文件,如170128.csv文件的路径为...\2017\1\170128.csv
#读取文件后将所有csv文件拼接
import pandas as pd
from datetime import datetime
import os
Startday='170106' #起始时间
Endday='170207' #终止时间
start=datetime.strptime(Startday,'%y%m%d') #转换为datetime格式的时间戳
end=datetime.strptime(Endday,'%y%m%d')
Frame=pd.DataFrame()
for year in range(start.year,end.year+1):
for month in range(start.month,end.month+1):
pathname= os.path.join(u'Z:\data',Item_num,Car_num,str(year),str(month))#文件夹路径名称
filenames=os.listdir(pathname) #遍历文件夹,得到该文件夹下的文件及子文件夹名字
for i in filenames:
if (datetime.strptime(i[11:17],'%y%m%d')-start).days>=0 and (datetime.strptime(i[11:17],'%y%m%d')-end).days<=0: #选取起止时间段内的文件
filepath=os.path.join(pathname,i) #得到文件的路径
F=pd.read_csv(filepath,skiprows=1,encoding="gbk",engine='python')#读取csv文件
Frame=pd.concat([Frame,F])
2、起止时间为datetime:
import pandas as pd
from datetime import datetime
import os
Startday=datetime(2017,1,6,0,0,0)#起始时间
Endday=datetime(2017,2,7,0,0,0)#终止时间#
Frame=pd.DataFrame()
for year in range(Startday.year,Endday.year+1):
for month in range(Startday.month,Endday.month+1):
pathname= os.path.join(u'Z:\data',str(year),str(month))
filenames=os.listdir(pathname)
for i in filenames:
if datetime.strptime(i[11:17],'%y%m%d')>=Startday and datetime.strptime(i[11:17],'%y%m%d')<=Endday:
filepath=os.path.join(pathname,i)
F=pd.read_csv(filepath,skiprows=1,encoding="gbk",engine='python')#读取csv文件
Frame=pd.concat([Frame,F])
相关文章推荐
- Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)(一)
- Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)(二)
- Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)
- 文件夹中文件夹(文件)按时间排序,读取最新的文件夹(文件)
- JSP 遍历读取文件夹下所有文件,目录
- [导入]Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)(一)
- 文件夹中文件夹(文件)按时间排序,读取最新的文件夹(文件)
- 按照文件修改时间遍历文件夹,进行文本连接
- 遍历读取指定文件夹下指定类型的所有文件
- python遍历文件夹读取文件大小
- Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)
- [转]Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)
- Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)
- C Windows 读取文件夹 遍历文件
- Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)(一)
- Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)
- Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)(一)
- ASP 按修改时间读取文件夹中文件并且排序
- 读取Assets所存在的所有文件(遍历每一个文件夹),并存入sdcard里面
- python 学习记录(11)-文件处理/读取文件/文件写入内容/文件删除/文件复制/文件重命名/后缀名/内容查找与替换/文件比较/ 配置文件访问/目录创建与删除/遍历目录/定向输出