Python 檢測本地檔案是否在下載 否就重新拉取

clamshine發表於2016-12-27
# coding:utf-8
import os
from os.path import join,getsize
import requests
import threading
import  datetime
#觸發器10s 選擇 crontab 5分鐘跑一次所以取消了
#def comparefilesize():
#    print("hello world")
#   global t    #Notice: use global variable!
#    t = threading.Timer(10.0, comparefilesize)
#    t.start()
#t = threading.Timer(10.0, comparefilesize)
#t.start()
#免登陸 傳遞引數,重新下載
def down():
    #保持會話session
    s = requests.session()
    data = {'username': 'XXX', 'password': 'XXX'}
    url = ''
    r = s.post(url, data=data)
    dates={
        'XXX':'XXXX',
        'XXX':'XXX'
    }
    a = s.post("",data=dates)
    print(a.status_code)
    print(a.json())
#輸出檔案大小位元組
def fileSize(bytes):
    try:
        bytes = float(bytes)
    except:
        print("傳入的位元組數錯誤")
        return "ERROR"
    return  "%f" % (bytes)
#獲取檔案大小
def getFileSize(path):
    try:
        size = os.path.getsize(path)
        return  fileSize(size)
    except Exception as error:
        print(error)
#獲取最新檔案大小
def getFiledir():
    base_dir = 'F:\\untitled1'
    #列出目錄下檔案
    l = os.listdir(base_dir)
    #排序 以下是參看大神的解釋
    #sorted([(x,os.path.getctime(os.path.join(p,x)))   實際是獲取檔名的元祖 os.path.join只是拼接該檔案
    #  p 為路徑 x為檔名  getctime是檔案建立時間 getmtime為檔案修改時間 getatime是檔案訪問時間
    #        for x in os.listdir(p) if os.path.isfile(os.path.join(p,x))  判斷在改路徑下的檔案 os.path.isfile
    #        ],
    #       key = lambda  i: i[-1]          可參見 sorted(d.items(), key=lambda x: x[1])   d是一個元祖 這可通value排序
    #       )
    l.sort(key=lambda fn:os.path.getmtime(base_dir+"\\"+fn) if not  os.path.isdir(base_dir+"\\"+fn) else 0 )  #排序語句
    #下面是輸出檔案修改時間
    d = datetime.datetime.fromtimestamp(os.path.getmtime(base_dir+"\\"+l[-1]))
    #輸出排序最新的檔案
    print(l[-1])
    return  l[-1]


if __name__=="__main__":
    file = open('F:\\untitled1\\2016-12-01-161615','r')  #搜尋比對文件初始值大小
    try:
        number1 = file.read()
    finally:
        file.close()
    dir_p = getFiledir()                                         # 獲取最新文件名
    number2 = getFileSize('F:\\untitled1\\'+dir_p)                      #獲取 最新文件 大小
    print(number2)
    print(number1)
    if number1 == number2:                                       #如果新檔案大小和本地檔案一致 就認為該檔案沒有下載重新下載
        down()
        print("down down down ")
        log = open('F:\\untitled1\\downlog','a')       #列印日誌
        log.write(number2)                                  #列印大小到日誌上
    else:
        try:
            file2 = open('F:\\untitled1\\2016-12-01-161615','w')   # 不等於就記下當前檔案的大小
            file2.write(str(number2))
        finally:
            file2.close()


#其中try finally 是借鑑別人說意外中斷可以釋放掉呼叫該檔案

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30629069/viewspace-2131467/,如需轉載,請註明出處,否則將追究法律責任。

相關文章