How to use result_notify method in autotest

Best Python code snippet using autotest_python

creating_line_data.py

Source:creating_line_data.py Github

copy

Full Screen

1import requests2from linebot.creating_flex_messages import *3from linebot.creating_picture_for_line_notify import *4from linebot.save_data_to_db import *567class creating_line_data ():8 def send_notify(message, token):9 try:10 Token = 'Bearer ' + token11 LINE_ACCESS_TOKEN = Token12 url = 'https://notify-api.line.me/api/notify'13 headers = {'content-type': 'application/x-www-form-urlencoded',14 'Authorization': LINE_ACCESS_TOKEN}15 r = requests.post(url, headers=headers, data={'message': message})16 print(r.text)17 return True18 except requests.ConnectionError as err:19 print("Connected to Line notify fail")20 return False21 def send_notify_picture(path, token,message,site_profile):22 try:23 url = "https://notify-api.line.me/api/notify"24 file = {'imageFile':open(path,'rb')}25 data = ({'message': message,})26 path_opened = True27 except :28 path_opened = False29 datetime_now = datetime.datetime.now().strftime("%d.%m.%y %H:%M")30 print ('CAN NOT OPEN URL PATH FOR LINE PICTURE NOTIFY FOR MESSAGES {} ON {}'.format(message,datetime_now))31 if path_opened == True:32 LINE_HEADERS = {"Authorization":"Bearer "+token}33 session = requests.Session()34 r=session.post(url, headers=LINE_HEADERS, files=file, data=data)35 if r.status_code == 200 :36 datetime_now = datetime.datetime.now().strftime("%d.%m.%y %H:%M")37 print ('SUCCESS LINE LINE NOTIFY PICTURE FOR MESSAGES {} ON {}'.format(message,datetime_now))38 file_path = path39 os.remove(file_path)40 print ('REMOVED FILE SUCCESS FOR MESSAGES {} ON {}'.format(message,datetime_now))41 return True42 elif r.status_code != 200 :43 datetime_now = datetime.datetime.now().strftime("%d.%m.%y %H:%M")44 # save_data_to_db.SaveDataSendLineFailedToBD('LINE_NOTIFY',path,message,site_profile)45 print ('FAILED SEND LINE GO TO SAVE PICTURE FOR MESSAGES {} ON {}'.format(message,datetime_now))46 return True47 else:48 return None49 def Line_Creating_MWGT_OFFLINE (line_data,site_profile):50 result_site = site_profile[0] # รับค่า return มาจาก linebot/connect_db_profile/get_site_profile ใน index ที่ 051 day_loss = line_data[0] # รับค่า return มาจาก linebot/calculate_function/different_time_calculate โดย return มาทั้งหมด 5 index 052 hours_loss = line_data[1] # รับค่า return มาจาก linebot/calculate_function/different_time_calculate โดย return มาทั้งหมด 5 index 153 minutes_loss = line_data[2] # รับค่า return มาจาก linebot/calculate_function/different_time_calculate โดย return มาทั้งหมด 5 index 254 datetime_now = line_data[3] # รับค่า return มาจาก linebot/calculate_function/different_time_calculate โดย return มาทั้งหมด 5 index 355 MWGT_last_time = line_data[4] # รับค่า return มาจาก linebot/calculate_function/different_time_calculate โดย return มาทั้งหมด 5 index 456 messages_header = 'MWGT-OFFLINE : '+'สถานี : ' + str(result_site.station_name)57 path_save=creating_picture_for_line_notify.CreatingPictureForMWGT('MWGT',line_data,site_profile,'OFF-LINE') #result_site.team_support.line_notify_token คือ อ้างอิงจาก site_profile --> อ้างไปที่ ตาราง Site -- > team_support --> อ้างไปที่ ตาราง Team --> line_notify_token58 result_notify=creating_line_data.send_notify_picture(path_save, result_site.team_support.line_notify_token,messages_header,site_profile)59 return creating_flex_messages.CreateNotifyFormMwgtOffline(line_data,site_profile) 60 def Line_Creating_MWGT_ONLINE (line_data,site_profile):61 result_site = site_profile[0] # รับค่า return มาจาก linebot/connect_db_profile/get_site_profile ใน index ที่ 062 day_loss = line_data[0] # รับค่า return มาจาก linebot/calculate_function/different_time_calculate โดย return มาทั้งหมด 5 index 063 hours_loss = line_data[1] # รับค่า return มาจาก linebot/calculate_function/different_time_calculate โดย return มาทั้งหมด 5 index 164 minutes_loss = line_data[2] # รับค่า return มาจาก linebot/calculate_function/different_time_calculate โดย return มาทั้งหมด 5 index 265 datetime_now = line_data[3] # รับค่า return มาจาก linebot/calculate_function/different_time_calculate โดย return มาทั้งหมด 5 index 366 Error_start = line_data[4] # รับค่า return มาจาก linebot/calculate_function/different_time_calculate โดย return มาทั้งหมด 5 index 467 messages_header = 'MWGT-ONLINE : '+'สถานี : ' + str(result_site.station_name)68 path_save=creating_picture_for_line_notify.CreatingPictureForMWGT('MWGT',line_data,site_profile[1],'ON-LINE') #result_site.team_support.line_notify_token คือ อ้างอิงจาก site_profile --> อ้างไปที่ ตาราง Site -- > team_support --> อ้างไปที่ ตาราง Team --> line_notify_token69 result_notify=creating_line_data.send_notify_picture(path_save, result_site.team_support.line_notify_token,messages_header,site_profile)70 return creating_flex_messages.CreateNotifyFormMwgtOnline(line_data,site_profile) 71 def Line_Creating_VIS_OFFLINE (line_data,site_profile):72 result_site = site_profile # รับค่า return มาจาก linebot/connect_db_profile/get_site_profile ใน index ที่ 073 messages_header = 'VIS-OFFLINE : '+'สถานี : ' + str(result_site.site.station_name)74 path_save=creating_picture_for_line_notify.CreatingPictureForVis('VIS',line_data,site_profile,'OFF-LINE') #result_site.team_support.line_notify_token คือ อ้างอิงจาก site_profile --> อ้างไปที่ ตาราง Site -- > team_support --> อ้างไปที่ ตาราง Team --> line_notify_token75 result_notify=creating_line_data.send_notify_picture(path_save, result_site.site.team_support.line_notify_token,messages_header,site_profile)76 return creating_flex_messages.CreateNotifyFormVisOffline(line_data,site_profile) 77 def Line_Creating_VIS_ONLINE (line_data,site_profile):78 result_site = site_profile[1] # รับค่า return มาจาก linebot/connect_db_profile/get_site_profile ใน index ที่ 79 messages_header = 'VIS-ONLINE : '+'สถานี : ' + str(result_site.site.station_name)80 path_save=creating_picture_for_line_notify.CreatingPictureForVis('VIS',line_data,site_profile[1],'ON-LINE') #result_site.team_support.line_notify_token คือ อ้างอิงจาก site_profile --> อ้างไปที่ ตาราง Site -- > team_support --> อ้างไปที่ ตาราง Team --> line_notify_token81 result_notify=creating_line_data.send_notify_picture(path_save, result_site.site.team_support.line_notify_token,messages_header,site_profile)82 return creating_flex_messages.CreateNotifyFormVisOnline(line_data,site_profile) 83 def Line_Creating_BATTERY_LOW (site_profile):84 result_site = site_profile # รับค่า return มาจาก linebot/connect_db_profile/get_site_profile ใน index ที่ 085 # day_loss = line_data[0] # รับค่า return มาจาก linebot/calculate_function/different_time_calculate โดย return มาทั้งหมด 5 index 086 # hours_loss = line_data[1] # รับค่า return มาจาก linebot/calculate_function/different_time_calculate โดย return มาทั้งหมด 5 index 187 # minutes_loss = line_data[2] # รับค่า return มาจาก linebot/calculate_function/different_time_calculate โดย return มาทั้งหมด 5 index 288 # datetime_now = line_data[3] # รับค่า return มาจาก linebot/calculate_function/different_time_calculate โดย return มาทั้งหมด 5 index 389 # Error_start = line_data[4] # รับค่า return มาจาก linebot/calculate_function/different_time_calculate โดย return มาทั้งหมด 5 index 490 messages = 'BATTERY Status LOW ' + '\n' + \91 'Type : ' + ' Battery : LOW ' + '\n' \92 'สถานี : ' + result_site.site.station_name + '\n' + \93 'IP : ' + str(result_site.site.station_ip) + '\n' + \94 'Serial : ' + str(result_site.NOZZLE_SN) + '\n' + \95 'หน้าที่ : ' + str(result_site.NOZZLE_pump_log_address) + '\n' + \96 'มือจ่าย : ' + str(result_site.NOZZLE_num) + '\n' + \97 'ระดับแรงดัน : ' + str(result_site.NOZZLE_Battery_Status_Volts) + ' V.'+ '\n' \98 + 'ช่างเขต : ' + result_site.site.team_support.team_name99 messages_header = 'BATTERY : LOW '+'สถานี : ' + str(result_site.site.station_name)100 path_save=creating_picture_for_line_notify.CreatingPictureForBATTERY('LOW',result_site) #result_site.team_support.line_notify_token คือ อ้างอิงจาก site_profile --> อ้างไปที่ ตาราง Site -- > team_support --> อ้างไปที่ ตาราง Team --> line_notify_token101 result_notify=creating_line_data.send_notify_picture(path_save, result_site.site.team_support.line_notify_token,messages_header,site_profile)102 return creating_flex_messages.CreateNotifyFormBatteryStatus('LOW',site_profile)103 def Line_Creating_BATTERY_FAILED (site_profile):104 result_site = site_profile # รับค่า return มาจาก linebot/connect_db_profile/get_site_profile ใน index ที่ 0105 # day_loss = line_data[0] # รับค่า return มาจาก linebot/calculate_function/different_time_calculate โดย return มาทั้งหมด 5 index 0106 # hours_loss = line_data[1] # รับค่า return มาจาก linebot/calculate_function/different_time_calculate โดย return มาทั้งหมด 5 index 1107 # minutes_loss = line_data[2] # รับค่า return มาจาก linebot/calculate_function/different_time_calculate โดย return มาทั้งหมด 5 index 2108 # datetime_now = line_data[3] # รับค่า return มาจาก linebot/calculate_function/different_time_calculate โดย return มาทั้งหมด 5 index 3109 # Error_start = line_data[4] # รับค่า return มาจาก linebot/calculate_function/different_time_calculate โดย return มาทั้งหมด 5 index 4110 messages = 'BATTERY Status ALARM ' + '\n' + \111 'Type : ' + ' Battery : FAILED ' + '\n' \112 'สถานี : ' + result_site.site.station_name + '\n' + \113 'IP : ' + str(result_site.site.station_ip) + '\n' + \114 'Serial : ' + str(result_site.NOZZLE_SN) + '\n' + \115 'หน้าที่ : ' + str(result_site.NOZZLE_pump_log_address) + '\n' + \116 'มือจ่าย : ' + str(result_site.NOZZLE_num) + '\n' + \117 'ระดับแรงดัน : ' + str(result_site.NOZZLE_Battery_Status_Volts) + ' V.'+ '\n' \118 + 'ช่างเขต : ' + result_site.site.team_support.team_name119 messages_header = 'BATTERY : ALARM '+'สถานี : ' + str(result_site.site.station_name)120 path_save=creating_picture_for_line_notify.CreatingPictureForBATTERY('ALARM',result_site) #result_site.team_support.line_notify_token คือ อ้างอิงจาก site_profile --> อ้างไปที่ ตาราง Site -- > team_support --> อ้างไปที่ ตาราง Team --> line_notify_token121 result_notify=creating_line_data.send_notify_picture(path_save, result_site.site.team_support.line_notify_token,messages_header,site_profile)122 return creating_flex_messages.CreateNotifyFormBatteryStatus('ALARM',site_profile)123 def Line_Creating_BATTERY_NORMAL (site_profile):124 result_site = site_profile # รับค่า return มาจาก linebot/connect_db_profile/get_site_profile ใน index ที่ 0125 # day_loss = line_data[0] # รับค่า return มาจาก linebot/calculate_function/different_time_calculate โดย return มาทั้งหมด 5 index 0126 # hours_loss = line_data[1] # รับค่า return มาจาก linebot/calculate_function/different_time_calculate โดย return มาทั้งหมด 5 index 1127 # minutes_loss = line_data[2] # รับค่า return มาจาก linebot/calculate_function/different_time_calculate โดย return มาทั้งหมด 5 index 2128 # datetime_now = line_data[3] # รับค่า return มาจาก linebot/calculate_function/different_time_calculate โดย return มาทั้งหมด 5 index 3129 # Error_start = line_data[4] # รับค่า return มาจาก linebot/calculate_function/different_time_calculate โดย return มาทั้งหมด 5 index 4130 messages = 'BATTERY Status ' + '\n' + \131 'Type : ' + ' Battery : NORMAL ' + '\n' \132 'สถานี : ' + result_site.site.station_name + '\n' + \133 'IP : ' + str(result_site.site.station_ip) + '\n' + \134 'Serial : ' + str(result_site.NOZZLE_SN) + '\n' + \135 'หน้าที่ : ' + str(result_site.NOZZLE_pump_log_address) + '\n' + \136 'มือจ่าย : ' + str(result_site.NOZZLE_num) + '\n' + \137 'ระดับแรงดัน : ' + str(result_site.NOZZLE_Battery_Status_Volts) + ' V.'+ '\n' \138 + 'ช่างเขต : ' + result_site.site.team_support.team_name139 # return creating_line_data.send_notify(messages , result_site.site.team_support.line_notify_token) #result_site.team_support.line_notify_token คือ อ้างอิงจาก site_profile --> อ้างไปที่ ตาราง Site -- > team_support --> อ้างไปที่ ตาราง Team --> line_notify_token 140 messages_header = 'BATTERY : NORMAL'+'สถานี : ' + str(result_site.site.station_name)141 path_save=creating_picture_for_line_notify.CreatingPictureForBATTERY('NORMAL',result_site) #result_site.team_support.line_notify_token คือ อ้างอิงจาก site_profile --> อ้างไปที่ ตาราง Site -- > team_support --> อ้างไปที่ ตาราง Team --> line_notify_token142 result_notify=creating_line_data.send_notify_picture(path_save, result_site.site.team_support.line_notify_token,messages_header,site_profile)143 return creating_flex_messages.CreateNotifyFormBatteryStatus('NORMAL',site_profile)144 def Line_Creating_NOZZLE_OFFLINE (line_data,site_profile):145 result_site = site_profile # รับค่า return มาจาก linebot/connect_db_profile/get_site_profile ใน index ที่ 0146 day_loss = line_data[0] # รับค่า return มาจาก linebot/calculate_function/different_time_calculate โดย return มาทั้งหมด 5 index 0147 hours_loss = line_data[1] # รับค่า return มาจาก linebot/calculate_function/different_time_calculate โดย return มาทั้งหมด 5 index 1148 minutes_loss = line_data[2] # รับค่า return มาจาก linebot/calculate_function/different_time_calculate โดย return มาทั้งหมด 5 index 2149 datetime_now = line_data[3] # รับค่า return มาจาก linebot/calculate_function/different_time_calculate โดย return มาทั้งหมด 5 index 3150 Error_start = line_data[4] # รับค่า return มาจาก linebot/calculate_function/different_time_calculate โดย return มาทั้งหมด 5 index 4151 messages_header = 'NOZZLE-OFFLINE : '+'สถานี : ' + str(result_site.site.station_name)152 path_save=creating_picture_for_line_notify.CreatingPictureForNOZZLE('NOZZLE',line_data,site_profile,'OFF-LINE') #result_site.team_support.line_notify_token คือ อ้างอิงจาก site_profile --> อ้างไปที่ ตาราง Site -- > team_support --> อ้างไปที่ ตาราง Team --> line_notify_token153 result_notify=creating_line_data.send_notify_picture(path_save, result_site.site.team_support.line_notify_token,messages_header,site_profile)154 return creating_flex_messages.CreateNotifyFormNozzleOffline(line_data,site_profile)155 def Line_Creating_NOZZLE_ONLINE (line_data,site_profile):156 result_site = site_profile # รับค่า return มาจาก linebot/connect_db_profile/get_site_profile ใน index ที่ 0157 day_loss = line_data[0] # รับค่า return มาจาก linebot/calculate_function/different_time_calculate โดย return มาทั้งหมด 5 index 0158 hours_loss = line_data[1] # รับค่า return มาจาก linebot/calculate_function/different_time_calculate โดย return มาทั้งหมด 5 index 1159 minutes_loss = line_data[2] # รับค่า return มาจาก linebot/calculate_function/different_time_calculate โดย return มาทั้งหมด 5 index 2160 datetime_now = line_data[3] # รับค่า return มาจาก linebot/calculate_function/different_time_calculate โดย return มาทั้งหมด 5 index 3161 Error_start = line_data[4] # รับค่า return มาจาก linebot/calculate_function/different_time_calculate โดย return มาทั้งหมด 5 index 4162 messages_header = 'NOZZLE-ONLINE : '+'สถานี : ' + str(result_site.site.station_name)163 path_save=creating_picture_for_line_notify.CreatingPictureForNOZZLE('NOZZLE',line_data,site_profile,'ON-LINE') #result_site.team_support.line_notify_token คือ อ้างอิงจาก site_profile --> อ้างไปที่ ตาราง Site -- > team_support --> อ้างไปที่ ตาราง Team --> line_notify_token164 result_notify=creating_line_data.send_notify_picture(path_save, result_site.site.team_support.line_notify_token,messages_header,site_profile)165 ...

Full Screen

Full Screen

RPFEM_doatsu.py

Source:RPFEM_doatsu.py Github

copy

Full Screen

1"""2#######################################################3#######################################################4#####  支持力曲線および支持力曲面のためのプログラム ####5#######################################################6###########   作成日時:2020年12月25日    #########7###########   作成者:大平 尚輝(専攻科1年)  ########8#######################################################91011【使用言語】12・Python131415【本プログラムの目的】16・土圧計算の作業の効率化1718【本プログラムの概要】19・土圧計算は作用位置を変化させて,土圧が最小値となる作用位置を探す20・従来は,1つ1つ,2Dyouso.datを打ち換え,実行,result.dを確認するといった繰り返しだった.21・このプログラムは,初期作用位置を設定したフォルダを用意すれば,自動的に土圧が最小値を認識し,その後,3つ分の解析をする.22・細かい解説は,以下にあるコードの上に書いてある.232425※注意点26・2Dyouso.dat内の作用位置を設定する行はプログラムを手打ちで変更しなければいけない.27・LINE通知のプログラムを実行する場合,自分のアクセストークンを発行して変更する.(https://notify-bot.line.me/ja/)28・解析フォルダ内にあるRPFEMの実行ファイルは,1つだけにする(RPFEMが含まれるexeファイルを1つだけ検出するため)29・解析が発散した場合,対処できない(途中で解析が止まってしまったら,それまでに作成されたフォルダを別フォルダに移動させて,途中から実行してください.30・汎用性を高めるため,用意する解析フォルダの名前は作用位置のみ(例えば,「1.5」)としてください.(最初の解析フォルダを初期作用位置とするため,余分な文字列があるとエラーとなります)31323334【ディレクトリ階層例】35~~~~~~~~~~~~~~~~~~~~~~~~~~~~~36C:.37└─1.5 <-----------------------------------------------初期作用位置38 2D.neu39 2Dyouso.dat <--------------------------------初期作用位置となるようにしてください40 analysis output.exe 41 libiomp5md.dll 42 RPFEM_OHIRA.exe <----------------------------解析終了時のPAUSEをなくしたRPFEM実行ファイル43~~~~~~~~~~~~~~~~~~~~~~~~~~~~~44454647"""484950"""51 以下の内容が書かれている行を2Dyouso.datを見て打ち換える5253 E 3443                             <-----------作用位置54 E 3443 -1.00000 0.00000 0.00000     <-----------作用量55"""56changedRow_1 = 21457changedRow_2 = 21558596061import os62import glob63import shutil64import re65import sys66import pandas as pd67import subprocess as sp6869# 解析を実施するディレクトリの設定70curr_dir = str(input("解析を実施するフォルダがあるディレクトリを入力:"))7172initial_folder_list = glob.glob(curr_dir + "\\*")73initial_dir = initial_folder_list[0]7475# RPFEMプログラムを取得する(名前はRPFEMから始まるものとする)76rpfem_dir = glob.glob(initial_folder_list[0] + "\\*.exe")77rpfem_dir = [d for d in rpfem_dir if "RPFEM" in os.path.basename(d)]78# RPFEMの解析フォルダが1つかどうかを判別(取得した際に,その数が1つでないなら,プログラムを終了させる)79if len(rpfem_dir) != 1:80 print("""81---------- ERROR ----------)82RPFEMプログラムが{}個、存在します。83正しいフォルダを用意してください。84---------------------------"""85.format(len(rpfem_dir)))86 sys.exit()8788# RPFEMの実行ファイルの名前"RPFE_○○○○○.exe"を取得89rpfem_exe = os.path.basename(rpfem_dir[0])90"""91 最初のフォルダの個数をカウント.1以外ならプログラムを中止.92"""93# 余分なファイル・フォルダが存在するかを判別94if len(initial_folder_list) != 1:95 print("""96---------- ERROR ----------)97余分なファイル・フォルダが存在します。98正しいフォルダを用意してください。99---------------------------"""100.format(len(initial_folder_list)))101 sys.exit()102103# フォルダの名前から初期作用位置を取得104height = float(os.path.basename(initial_dir))105106107# 解析結果を集計するための空リストおよび,2Dyouso.dat内の番号を変更するための変数を設定108109list_value = []110list_height = []111list_time = []112node_number_count = 0113def remove_file():114 remove_files = ["out_seepage_element.d", "out_seepage_node.d", "resultseepage.d", "fem-change_data.exe", "libiomp5md.dll"]115 for remove_file in remove_files:116 if os.path.exists(remove_file):117 os.remove(remove_file)118 os.remove(rpfem_dir[0])119 120"""121 初期高さの土圧計算(1周目)122"""123def rpfem(dir, height):124125 # 解析を行う解析フォルダにカレントディレクトリを変更126 os.chdir(dir)127 # RPFEMの実行ファイルを実行128 sp.call(rpfem_exe)129130 # 解析中......解析が終われば[result.d]が生成される131 # 解析結果を取得するため,result.dを読み込む132 with open("result.d", "r") as ff:133 lines = ff.read().splitlines()134 # RPFEM値(主働土圧合力)の取得135 res_value = "res_value_{}".format(height)136 res_value = re.compile("\d+\.\d+").findall(lines[-3])137 # 解析時間を取得138 res_time = re.compile("\d+\.\d+").findall(lines[-1])139140 # 取得した解析結果と,作用位置をリストに格納141 list_value.append(res_value[0])142 list_time.append(res_time[0])143 list_height.append(round(height, 2))144 145 # 初期作用位置の解析が終了146 print(dir, ": END")147 # remove_file()148149150"""151 土圧計算(2周目以降,前の解析結果との差が+になるまで)152"""153def rpfem_while(dir, height, changedRow_1, changedRow_2):154 global node_number_count155156 # 初期作用地位の解析フォルダをもとに,解析フォルダを複製157 shutil.copytree(initial_dir, dir)158159 #複製した解析フォルダにカレントディレクトリを変更160 os.chdir(dir)161162 # 以下の[row1], [row2]で,2Dyouso.dat内の作用位置を変更する)163 # ========================row1=============================164 with open("2Dyouso.dat", "r", encoding="cp932") as file:165 data_lines = file.read()166 row1 = data_lines.splitlines()[changedRow_1 - 1][0:]167 sep = row1.split()168 node_number_count += 1169 node_number = int(sep[1]) + node_number_count170 data_line1 = data_lines.replace(row1, "E "+ str(node_number))171172 with open("2Dyouso.dat", mode="w", encoding="cp932") as file:173 file.write(data_line1)174175 # ========================row2=============================176177178 with open("2Dyouso.dat", "r", encoding="cp932") as file:179 data_lines = file.read()180 row2 = data_lines.splitlines()[changedRow_2 - 1][0:]181182 data_line2 = data_lines.replace(row2, "E "+str(node_number)+" -1.00000 0.00000 0.00000")183184 with open("2Dyouso.dat", mode="w", encoding="cp932") as file:185 file.write(data_line2)186187 # 2Dyouso.datを変更したら,RPFEMの実行ファイルを実行188 sp.call(rpfem_exe)189 # remove_file()190191192 with open("result.d", "r") as ff:193 lines = ff.read().splitlines()194 res_value = "res_value_{}".format(height)195 res_value = re.compile("\d+\.\d+").findall(lines[-3])196 #print(res_value)197 #print(diff_value)198199 res_time = re.compile("\d+\.\d+").findall(lines[-1])200201 list_value.append(res_value[0])202 list_time.append(res_time[0])203 list_height.append(round(height, 2))204205 print(dir, ": END")206207208"""209 グラフ化の関数210"""211import matplotlib.pyplot as plt212import numpy as np213def graph():214 #y = list_height215 #x = list_value216 #x = [float(i) for j in x for i in j]217 #y = [float(i) for i in y]218219 os.chdir(curr_dir)220 # 作成したresult.csvのデータを読込221 data = np.loadtxt(222 fname = "result.csv",223 dtype = "float",224 delimiter = ",",225 skiprows = 1226 )227228 # グラフを描くためのxおよびyのリストを設定229 x = data[:, 1]230 y = data[:, 0]231232 fig = plt.figure(figsize=(9, 9))233 ax = fig.add_subplot(111)234235 # 軸の幅をxおよびyの最小値と最大値に変更236 ax.set_xlim(min(x), max(x))237 ax.set_ylim(min(y), max(y))238239 # 軸ラベルの設定240 ax.set_xlabel("Active Earth Pressure Pa [kN/m]", font="Times New Roman", fontsize = 20)241 ax.set_ylabel("Earth Pressure Acting Point h [m]", font="Times New Roman", fontsize = 20)242 #ax.set_title(sep_list)243244 # フォントの設定245 plt.rcParams['font.size'] = 14246 plt.rcParams['font.family'] = 'Times New Roman'247248 # 目盛の設定(内側)249 plt.rcParams['xtick.direction'] = 'in'250 plt.rcParams['ytick.direction'] = 'in'251252 # 目盛り線の設定(グラフの上下左右)253 ax.yaxis.set_ticks_position('both')254 ax.xaxis.set_ticks_position('both')255256 # x軸に補助目盛線を設定257 ax.grid(which = "major", axis = "x", color = "black", alpha = 0.5, linestyle = "--", linewidth = 1)258259 # y軸に目盛線を設定260 ax.grid(which = "major", axis = "y", color = "black", alpha = 0.5, linestyle = "--", linewidth = 1)261262 # RPFEMの解析値をプロット(縦軸に作用位置,横軸に土圧合力)263 ax.scatter(x, y, label="RPFEM", s=300, color="black")264265 # プロットした点を線で結ぶ(折れ線グラフ)266 ax.plot(x, y, label="RPFEM", color="black")267268 # 作用位置が最小値となる箇所に赤い横線を描写269 ax.plot([min(x), max(x)],[min_height, min_height], "red", linestyle='-')270271 # 解析フォルダがあるディレクトリにグラフを"graph.png"として保存272 fig.savefig(curr_dir+ "//graph.png")273274"""275 LINEに通知する関数276"""277import requests278def send_line_notify_ohira(message):279 line_notify_token = '6KIyVw4wK3PEjRm5IhtqqLZzWELPJJIoedxJm4EYuuw'######<---------ここがアクセストークンで,自分のものに変える.詳しくはググる,ohira280 line_notify_api = 'https://notify-api.line.me/api/notify'281 headers = {'Authorization': f'Bearer {line_notify_token}'}282 data = {'message': message}283 files = {'imageFile': open(os.path.join(curr_dir, "graph.png"), "rb")}284 requests.post(line_notify_api, headers = headers, data = data, files = files)285286287288"""289 フォルダを整理する関数290"""291import os292import glob293294remove_files = ["out_seepage_element.d", "out_seepage_node.d", "resultseepage.d", "fem-change_data.exe", "libiomp5md.dll"]295def cleaning_folder(curr_dir, rpfem_exe):296 file_dirs = glob.glob(curr_dir + "\\*")297 for file_dir in file_dirs:298 os.chdir(file_dir)299 for remove_file in remove_files:300 if os.path.exists(remove_file):301 os.remove(remove_file)302303 if os.path.exists(rpfem_exe):304 os.remove(rpfem_exe)305306307308"""309 以下,プログラムの実行310"""311312# diffの初期値の設定313diff = 1314315#1つ目のRPFEMを実行316rpfem(initial_dir, height)317# プラスならwhile文続行し,マイナスならwhile文を抜け出す318319320while diff > 0:321 height += 0.1322 # 解析するディレクトリの設定323 dir = curr_dir + "\\" + str(round(height, 2))324325 # RPFEMの実行(ここに,解析フォルダの準備,2Dyouso.datの書換などが含まれる)326 rpfem_while(dir, height, changedRow_1, changedRow_2)327328 # 1つ前の作用位置で求めたRPFEMとの差分を算出329 diff = float(list_value[-2]) - float(list_value[-1])330331# while文が終了したときの最後から2つ目の値が最小値となる332min_value = list_value[-2]333min_height = list_height[-2]334335336"""337 土圧が最小値になった後,2周分の解析をする338"""339# while文での作業を2回分行う.340height += 0.1341dir = curr_dir + "\\" + str(round(height, 2))342rpfem_while(dir, height, changedRow_1, changedRow_2)343344height += 0.1345dir = curr_dir + "\\" + str(round(height, 2))346rpfem_while(dir, height, changedRow_1, changedRow_2)347348349350if min_value > list_value[-1]:351 height += 0.1352 dir = curr_dir + "\\" + str(round(height, 2))353 rpfem_while(dir, height, changedRow_1, changedRow_2)354 height += 0.1355 dir = curr_dir + "\\" + str(round(height, 2))356 rpfem_while(dir, height, changedRow_1, changedRow_2)357 height += 0.1358 dir = curr_dir + "\\" + str(round(height, 2))359 rpfem_while(dir, height, changedRow_1, changedRow_2)360361362if min_value > list_value[-2]:363 height += 0.1364 dir = curr_dir + "\\" + str(round(height, 2))365 rpfem_while(dir, height, changedRow_1, changedRow_2)366 height += 0.1367 dir = curr_dir + "\\" + str(round(height, 2))368 rpfem_while(dir, height, changedRow_1, changedRow_2)369370min_value = min(list_value)371index = list_value.index(min(list_value))372min_height = list_height[index]373374375376cleaning_folder(curr_dir, rpfem_exe)377378"""379 解析結果が格納されているリストをCSVに集計380"""381df_result = pd.DataFrame.from_dict({"Height":list_height,"Analysis Value":list_value, "Analysis Time":list_time})382df_result.to_csv(os.path.join(curr_dir, "result.csv"), index=False)383384385386graph()387388print("""389=====================================================390 解析フォルダ:{folder}391 土圧の最小値:{min_value}392 その作用位置:{min_height}393=====================================================394""".format(folder=curr_dir, min_value=min_value, min_height=min_height)395)396397398"""399 解析値および,そのグラフをLINE Notify に送信する400"""401result_notify = [(str(i) + ":" + str(j)) for (i, j) in zip(list_height, list_value)]402result_notify = '\n'.join(result_notify)403message = "\n 【{curr_dir}】\n=======結果=======\n {result_notify}\n================".format(curr_dir=curr_dir, result_notify=result_notify)404send_line_notify_ohira(message) ...

Full Screen

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run autotest automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful