Python 检测本地文件是否在下载 否就重新拉取

# 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 = 'http://XXXX/login'
    r = s.post(url, data=data)
    dates={
        'XXX':'XXXX',
        'XXX':'XXX'
    }
    a = s.post("http://XXX",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/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/30629069/viewspace-2131467/

你可能感兴趣的:(Python 检测本地文件是否在下载 否就重新拉取)