【python】整理一些實用的函式
阿新 • • 發佈:2018-12-26
hcq_lib.py
更新時間:20180410
# -*- coding: utf-8 -*- """ Spyder Editor This is a temporary script file. """ import time import datetime import os import shutil ## utils --> bar by hy import sys import math import torch.nn as nn import torch.nn.init as init def hcq_write(save_info_path, is_write_time, is_print, write_content): i = datetime.datetime.now() date = str(i.year) + str("%02d"%i.month) + str("%02d"%i.day) + "-" + str("%02d"%i.hour) + str("%02d"%i.minute) + str("%02d"%i.second) with open(save_info_path, "a+") as save_info_txt: if(is_write_time): if(is_print): print("[{}] {}".format(date, write_content)) save_info_txt.writelines("[{}] {}".format(date, write_content) + "\n") else: if(is_print): print(write_content) save_info_txt.writelines("{}".format(write_content) + "\n") def hcq_backup_txt_rename(txt_path): i = datetime.datetime.now() date = str(i.year) + str("%02d"%i.month) + str("%02d"%i.day) + "-" + str("%02d"%i.hour) + str("%02d"%i.minute) + str("%02d"%i.second) if os.path.exists(txt_path): new_name = txt_path +".bak" + date os.rename(txt_path, new_name) # copy(new_name, "./backup/") print("copied and deleted file, new_name = {}".format(new_name)) def hcq_backup_txt_rename_index(txt_path, index): if os.path.exists(txt_path): new_name = txt_path + "_" + str(index) os.rename(txt_path, new_name) # copy(new_name, "./backup/") print("copied and deleted file, new_name = {}".format(new_name)) def hcq_bubble_sort(active_train_samples_list): print("hcq_bubble_sort...") for i in range(len(active_train_samples_list)-1): current_status = False for j in range(len(active_train_samples_list) - i -1): if active_train_samples_list[j].p_pred_max > active_train_samples_list[j+1].p_pred_max: temp = active_train_samples_list[j] active_train_samples_list[j] = active_train_samples_list[j+1] active_train_samples_list[j+1] = temp # active_train_samples_list[j], active_train_samples_list[j+1] = active_train_samples_list[j+1], active_train_samples_list[j] current_status = True if not current_status: break return active_train_samples_list # def hcq_random_select(active_train_samples_list): # print("hcq_random_select...") # active_train_samples_list = def hcq_create_dir(dir_path): if not os.path.exists(dir_path): print("Create dir = {}".format(dir_path)) os.makedirs(dir_path) def hcq_move(old_file, new_file): shutil.move(old_file, new_file) #### progress_bar #### from hy, 20180310 _, term_width = os.popen('stty size', 'r').read().split() term_width = int(term_width) TOTAL_BAR_LENGTH = 10. last_time = time.time() begin_time = last_time def progress_bar(current, total, msg=None): global last_time, begin_time if current == 0: begin_time = time.time() # Reset for new bar. cur_len = int(TOTAL_BAR_LENGTH*current/total) rest_len = int(TOTAL_BAR_LENGTH - cur_len) - 1 sys.stdout.write(' [') for i in range(cur_len): sys.stdout.write('=') sys.stdout.write('>') for i in range(rest_len): sys.stdout.write('.') sys.stdout.write(']') cur_time = time.time() step_time = cur_time - last_time last_time = cur_time tot_time = cur_time - begin_time L = [] if msg: L.append(' | ' + msg) msg = ''.join(L) sys.stdout.write(msg) for i in range(term_width-int(TOTAL_BAR_LENGTH)-len(msg)-3): sys.stdout.write(' ') # Go back to the center of the bar. for i in range(term_width-int(TOTAL_BAR_LENGTH/2)+2): sys.stdout.write('\b') sys.stdout.write(' %d/%d ' % (current+1, total)) if current < total-1: sys.stdout.write('\r') else: sys.stdout.write('\n') sys.stdout.flush() ### class ### author: houchaoqun ### 2018.03.24 class active_train_samples: def __init__(self, image_path, p_pred_max, result): self.image_path = image_path self.p_pred_max = p_pred_max ## model predict the p of real lable self.result = result # def __repr__(self): # return repr((self.name, self.grade, self.age))
備份函式:
explain:#!/usr/bin/python # -*- coding: utf-8 -*- import os import datetime import shutil def backup_txt_rename(txt_path): if os.path.exists(txt_path): i = datetime.datetime.now() date = str(i.year) + str("%02d"%i.month) + str("%02d"%i.day) + str("%02d"%i.hour) + str("%02d"%i.minute) + str("%02d"%i.second) new_name = txt_path +".bak" + date os.rename(txt_path, new_name) print("copied and deleted file, new_name = {}".format(new_name))
1)txt 檔案備份,當檔案存在時,先備份再生成相同的檔名;
2)txt_path:檔案路徑,如:
"/home/reserch/documents/deeplearning/alzheimers_disease_DL/pytorch/subject_id/test/file.txt"
3)效果如下: