由於剛上手乙個python做專案,會遇到各種的坑,所以邊學習邊實踐,通過寫一篇博文來記錄其中的知識點,方便自己以後再用到時便於查詢。
第一步:建立資料夾,用來存中間計算過程中的資料
def mkdir(path):
folder = os.path.exists(path)
if not folder: #判斷是否存在資料夾如果不存在則建立為資料夾
os.makedirs(path) #makedirs 建立檔案時如果路徑不存在會建立這個路徑
print ("建立新資料夾:%s"%path)
else:
for info in os.listdir(path):
domain=os.path.abspath(path) #獲取資料夾的路徑
info=os.path.join(domain,info)
os.remove(info)
# print( "\該資料夾已經存在,已經清空資料夾下的所有內容")
file1 = "d:\\spi\\real"
mkdir(file1)
第二步:匹配資訊,讀取csv資料夾的的資料,並存到txt文件中老闆說了,你這個程式,一些必要的資訊能不能只輸入一次就可以了,以後就不要認為輸入了。後來我想,建立乙個資料夾,裡面建乙個excel文件,把要輸入的資訊固定檔案命名格式和裡面內容格式定死,只要使用者往裡面填寫東西就行了。當然了,要輸入資訊的這個檔名稱和搜尋資料的檔名稱要對得上才行,例如,d:\spi\model裡有a121231.xlsx 、a121232.xlsx 和d:\spi\spidata\a121231_dsf.csv、a121231_dss2f.csv、a121231_ds222f.csv、a121231_dsf454.csv有相同的a121231,根據這個就把a121231.xlsx和d:\spi\spidat裡面的資料夾資料匹配起來了。
if not os.listdir('d:\\spi\\spidata'):
time.sleep(2)
else:
for info1 in os.listdir(r'd:\\spi\\model'):
a=info1.split('.')[0]
for info2 in os.listdir(r'd:\\spi\\spidata'):
b=info2.split('_')[0]
if a==b:
c=aelse:
continue
path=pd.read_excel('d:\spi\\model\\%s.xlsx'%c)
pad=path.pad
upa=path.upa
downa=path.downa
uph=path.uph
downh=path.downh
第三部:資料定期讀取在這個程式中,每5秒鐘就讀取一次資料夾,把滿足條件的資料讀出來並存到dataframe中,當乙個csv文件被讀完後,把它移到到另外乙個地方去,防止下次讀取時重複讀取,如果這個資料夾對你沒有用來,也可以考慮刪掉。
while 1==1:
if not os.listdir('d:\\spi\\spidata') or len([name for name in os.listdir(r'd:\\spi\\spidata')])2) or (db.area[s]/np.mean(db.area)<0.5):
db.area[s]=np.mean(db.area)
db.hight[s]=np.mean(db.hight)
filename1='%s.txt'%pad[j] #把每乙個pad點的高度和面積存到對應的資料夾中
filepath1=file1+os.path.sep+filename1
db.to_csv(filepath1,sep=',',index=false,header=none,mode='a+')
infoo.close() #關閉已開啟的檔案
shutil.move(info,file3) #移動檔案到path裡
第四步|:資料排序在這一步中,遇到資料按時間排序的問題,在在網上找到的辦法是db.sort_values(by=『datetime』),這種辦法列印出來後,看到的資料是按時間排序了,但是原始資料db的順序並沒有被打亂。要修改為db.sort_values(by=『datetime』,ascending=true,inplace=true)
這裡遇到乙個坑,關於時間轉換的問題,我用過兩種辦法,一種是用datetime,另一種是time,發現用datetime 轉換會不准,至於為什麼,我還沒搞明白。
舉個例子:
import datetime
import time
time='2019-04-23 21:15:36'
t=datetime.datetime.strptime(time,'%y-%m-%d %h:%m:%s')
d11=datetime.datetime.timestamp(t)
datearray = datetime.datetime.utcfromtimestamp(d11)
otherstyletime = datearray.strftime("%y-%m-%d %h:%m:%s")
print(otherstyletime)
otherstyle=time.strptime(time,'%y-%m-%d %h:%m:%s')
otherstyle1=time.mktime(otherstyle) #轉換成時間錯
otherstyle2=time.localtime(otherstyle1)
otherstyle3=time.strftime('%y-%m-%d %h:%m:%s',otherstyle2)
print(otherstyle3)
2019-04-23 13:15:36
2019-04-23 21:15:36
至於專案中的其他程式,怕被老闆看到,就不一一貼出來了。
程式要實際應用起來,還有很多路要走,還有很多地方要修改完善,這一路上的苦,跪著也要走完。
飛機大戰專案 使用pycharm時遇到的問題
今日想練習下飛機大戰的專案.在ubuntu系統上安裝了乙個pycharm.file settings editor font 即可調節字型大小 file settings 選擇專案projects project interpreter 選擇已存在的python直譯器 的安裝路徑 是因為預設了vim...
使用NodeJS GruntCLI遇到的問題
執行環境cmd nodejs版本v0.8.4 node version 需求 需要用到grunt的js編譯功能,各位別笑我。使用 安裝完grunt cli報錯 grunt grunt cli the grunt command line inte ce.v0.1.13 fatal error una...
使用camare GPUImage遇到的問題
1 拍照角度不正確 parameters params mcamera.getparameters params.setrotation 90 mcamera.setparameters params 2 切換前置 預覽圖變小 parameters.setpreviewsize 720,480 si...