使用PYTHON做项目遇到的问题及解决办法

由於刚上手一个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=a
            else:
                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)
使用PYTHON做项目遇到的问题及解决办法_第1张图片
这里遇到一个坑,关于时间转换的问题,我用过两种办法,一种是用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

至于项目中的其他程序,怕被老板看到,就不一一贴出来了。

程序要实际应用起来,还有很多路要走,还有很多地方要修改完善,这一路上的苦,跪着也要走完。

你可能感兴趣的:(python)