平常用到的一些資料檔案,經常以時間命名,如「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])
使用系統時間命名資料夾
呼叫系統時間命名檔案,可使用android類time,獲得年月日時的值,並根據前一篇的下標組成乙個帶時間和索引的檔名稱,例如 file 09時10分 001.txt。對系統時間的呼叫 time t new time or time t new time gmt 8 加上time zone資料 t.s...
python遍歷資料夾讀取檔案大小
閒來無事,寫了個小程式刪除記憶體卡中大於50m的檔案 filename itertaorfilefolder import os import os.path filepath raw input enter filepath 遍歷資料夾 三個引數 分別返回1.父目錄 2.所有資料夾名字 不含路徑 ...
遍歷資料夾
function search path string filename string ball boolean false string varsearchrec tsearchrec begin if findfirst path faanyfile,searchrec 0 then begin...