liuyiliux 发表于 2019-8-12 15:36

【python】【Python】定时查询文件是否修改

本帖最后由 wushaominkk 于 2019-8-13 08:32 编辑

本人小白,一直搞手工测试的前几天学妹公司让做一个判断文件的代码练练手,拿来修改了下,源码如下:import time

import xlrd
import threading
def res_one():
    z=[]
    for i in range(row):
      rowdate = worksheet.row_values(i)# i行的list
      z.append(rowdate)
    return z
def sayhello():
    global t
    workxls = xlrd.open_workbook("g:/work-6-28.xlsx")
    worksheet = workxls.sheet_by_name("Sheet1")
    row = worksheet.nrows# 总行数
    for i in range(row):
      rowdate = worksheet.row_values(i)# i行的list
      for a, b in enumerate(rowdate):
            # print(i, a, b)# 第i行,a列,数据b
            x=res(b,z)
            if x:
                print("有修改在:" + str(i + 1) + "行" + str(a + 1) + "列") #数列从0开始,加1方便阅读
                print("修改值:" + str(z))
                print("修改后值:" + str(b))
                print("修改时间为:" + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
                z = rowdate #重置修改地方的数据判断为新的数据
            else:
                pass
    t = threading.Timer(1.0, sayhello)
    t.start()

def res(b,c):
    if (b == c):
      return 0
    else:
      return 1
if __name__ == '__main__':
    workxls = xlrd.open_workbook("g:/work-6-28.xlsx")
    worksheet = workxls.sheet_by_name("Sheet1")
    row = worksheet.nrows# 总行数
    z=res_one()
    t = threading.Timer(1.0, sayhello)
    t.start()
功能是定时检查Excel数据是否有改动。理论上判断有改动后要触发邮件或者其他微信接口等通知。比如bug状态值改成已修复了发信息给测试。
效果图如下:

s1761165854 发表于 2019-8-12 15:56

windows有接口 修改了文件会提示的

xian54966 发表于 2019-8-12 16:03

更适用于表格结构固定的文档,只是其中数据增删改会好些。要是插入或者删除行或者列,反馈的数据可读性就不高了

liuyiliux 发表于 2019-8-12 16:47

s1761165854 发表于 2019-8-12 15:56
windows有接口 修改了文件会提示的

感谢指点

liuyiliux 发表于 2019-8-12 16:48

xian54966 发表于 2019-8-12 16:03
更适用于表格结构固定的文档,只是其中数据增删改会好些。要是插入或者删除行或者列,反馈的数据可读性就不 ...

感谢指点

pkclown 发表于 2019-8-12 23:06

s1761165854 发表于 2019-8-12 15:56
windows有接口 修改了文件会提示的

请问下是什么接口,谢谢了

s1761165854 发表于 2019-8-15 10:12

pkclown 发表于 2019-8-12 23:06
请问下是什么接口,谢谢了

使用Qt的话有QFileSystemWatcher类
Win32的话是ReadDirectoryChangesW(hFile,
                        &Buffer,
                        sizeof(Buffer),
                        TRUE,
                        FILE_NOTIFY_CHANGE_FILE_NAME |// 修改文件名
                        FILE_NOTIFY_CHANGE_ATTRIBUTES | // 修改文件属性
                        FILE_NOTIFY_CHANGE_LAST_WRITE , // 最后一次写入
                        &BytesReturned,
                        NULL, NULL);   放在线程里监控就行
页: [1]
查看完整版本: 【python】【Python】定时查询文件是否修改