osc/research/jd_data/api_request/file_checker.py
2025-05-28 19:16:17 +08:00

54 lines
2.5 KiB
Python

import os
import time
import pymysql
target_paths = ['F:/jd_data', 'G:/jd_data']
if __name__ == "__main__":
db = pymysql.connect(host='39.101.194.63', port=23306,
user='root', passwd='passok123A', db='jd_data', charset='utf8mb4')
cursor = db.cursor()
count = 0
for target_path in target_paths:
for file_name in os.listdir(target_path):
count += 1
hierarchy = file_name.replace(".zip", "").split(" + ")
experiment = hierarchy[0]
variable = hierarchy[1]
model = hierarchy[2]
sql_select = "SELECT id, experiment, variable, model, level, data_size, downloaded_time " \
"FROM jd_data.data_detail " \
"WHERE experiment = '{}' AND variable = '{}' AND model = '{}'".format(experiment, variable, model)
cursor.execute(sql_select)
result = cursor.fetchall()
total_num = len(result)
if total_num == 1:
row = result[0]
row_id = row[0]
experiment = row[1]
variable = row[2]
model = row[3]
level = row[4]
data_size = row[5]
downloaded_time = row[6]
f_size = os.path.getsize("/".join([target_path, file_name]))
if f_size >= data_size:
print("[No. {}] {}校验通过,文件大小符合".format(str(count), file_name))
if f_size != data_size:
print("-------------------- id: {}, f_size={}, data_size={} --------------------".format(row_id, f_size, data_size))
# if downloaded_time is None:
# f_mtime = os.path.getmtime("/".join([target_path, file_name]))
# f_mtime_str = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(f_mtime))
# sql_update = "UPDATE jd_data.data_detail " \
# "SET downloaded_time = '{}' WHERE id = '{}';".format(f_mtime_str, row_id)
# cursor.execute(sql_update)
# db.commit()
else:
print("{}校验不通过,文件大小不够".format(file_name))
sql_update = "UPDATE jd_data.data_detail " \
"SET downloaded = 0, downloaded_time = null WHERE id = '{}';".format(row_id)
cursor.execute(sql_update)
db.commit()
db.close()