Combining 2 or more scripts to one. - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: General Coding Help (https://python-forum.io/forum-8.html) +--- Thread: Combining 2 or more scripts to one. (/thread-25414.html) |
Combining 2 or more scripts to one. - Makada - Mar-29-2020 Hi, Id like to know how i can make one script from 2 or more so i can just run one script with multiple functions. Below are the 2 scripts which i want to have running in one script. Both scripts have their own output file and time of execution. import time import schedule #starttime=time.time() def task(): #Input_file: "C:\\Campbellsci\\LoggerNet\\CR1000_Table1.dat" #Output_file: "C:\\Users\\Makada\\Desktop\\CR1000_Table1 - kopie.dat" while True: """ Not to append duplicate data to output file""" existingLines = set(line.strip() for line in open("C:\\Users\\Makada\\Desktop\\CR1000_Table1 - kopie .dat")) outfile = open("C:\\Users\\Makada\\Desktop\\CR1000_Table1 - kopie .dat", "a+") for content in open("C:\\Campbellsci\\LoggerNet\\CR1000_Table1.dat", "r"): if content.strip() not in existingLines: # to void duplicate lines outfile.write(content) existingLines.add(content) outfile.close() schedule.every().minute.at(":01").do(task) while True: schedule.run_pending() time.sleep(1) refresh() import time import schedule #starttime=time.time() def task(): #Input_file: "C:\\Campbellsci\\LoggerNet\\CR1000_Table1.dat" #Output_file: "C:\\Users\\Makada\\Desktop\\CR1000_Table1 - kopie.dat" while True: """ Not to append duplicate data to output file""" existingLines = set(line.strip() for line in open("C:\\Users\\Makada\\Desktop\\CR1000_Table2 - kopie.dat")) outfile = open("C:\\Users\\Makada\\Desktop\\CR1000_Table2 - kopie.dat", "a+") for content in open("C:\\Campbellsci\\LoggerNet\\CR1000_Table2.dat", "r"): if content.strip() not in existingLines: # to void duplicate lines outfile.write(content) existingLines.add(content) outfile.close() schedule.every().minute.at(":10").do(task) while True: schedule.run_pending() time.sleep(1) refresh() RE: Combining 2 or more scripts to one. - michael1789 - Mar-29-2020 I'm not sure the ins and outs of those modules, but shoot for something like this: import time import schedule def task1(): existingLines = set(line.strip() for line in open("C:\\Users\\Makada\\Desktop\\CR1000_Table1 - kopie .dat")) outfile = open("C:\\Users\\Makada\\Desktop\\CR1000_Table1 - kopie .dat", "a+") for content in open("C:\\Campbellsci\\LoggerNet\\CR1000_Table1.dat", "r"): if content.strip() not in existingLines: # to void duplicate lines outfile.write(content) existingLines.add(content) outfile.close() def task2(): existingLines = set(line.strip() for line in open("C:\\Users\\Makada\\Desktop\\CR1000_Table2 - kopie.dat")) outfile = open("C:\\Users\\Makada\\Desktop\\CR1000_Table2 - kopie.dat", "a+") for content in open("C:\\Campbellsci\\LoggerNet\\CR1000_Table2.dat", "r"): if content.strip() not in existingLines: # to void duplicate lines outfile.write(content) existingLines.add(content) outfile.close() schedule.every().minute.at(":01").do(task1) schedule.every().minute.at(":10").do(task2) while True: schedule.run_pending() time.sleep(1) refresh() RE: Combining 2 or more scripts to one. - Makada - Mar-30-2020 That is working fine, thanks alot RE: Combining 2 or more scripts to one. - Makada - Mar-30-2020 The last 3 scripts which i want to join to one script are a bit more difficult i think. import requests import csv import hashlib import time import schedule import urllib from time import sleep import sys starttime=time.time() def task(): x = time.strftime("%Y%m%d%H%M%S") y = "Name" a = "Password" z = x + y + a rawdata = str(x) + y + a mdpass = hashlib.md5(str(rawdata).encode("utf-8")).hexdigest() WUurl = "https://www.windguru.cz/upload/api.php?" uid = "Name" pwd = "Password" WUcreds = "uid=" + y + "&salt=" + x + "&hash=" + mdpass action_str = "" WeatherUnderground= open("C:\\Campbellsci\\LoggerNet\\CR1000_upload.dat", "r") csvReader = csv.reader(WeatherUnderground) for field in csvReader: a = (field[18]) b = (field[12]) c = (field[4]) d = (field[21]) e = (field[8]) wind_avg=a wind_direction=b temperature=c wind_max=d rh=e r= requests.get( WUurl + WUcreds + "&wind_avg=" + str(wind_avg)+ "&wind_direction=" + str(wind_direction)+ "&temperature=" + str(temperature)+ "&wind_max=" + str(wind_max)+ "&rh=" + str(rh)+ action_str) print("Received " + str(r.status_code) + " " + str(r.text), flush=True) print(z, flush=True) print(time.strftime("%Y%m%d%H%M%S"), flush=True) print(mdpass, flush=True) while True: try: task() time.sleep(60 - time.time() % 60) refresh() except: pass time.sleep(1) else: time.sleep(60) refresh() import requests import time import schedule import csv starttime=time.time() WUurl = "https://weatherstation.wunderground.com/weatherstation\ /updateweatherstation.php?" WU_station_id = "Name" # Replace XXXX with your PWS ID WU_station_pwd = "Password" # Replace YYYY with your Password WUcreds = "ID=" + WU_station_id + "&PASSWORD="+ WU_station_pwd date_str = "&dateutc=now" action_str = "&action=updateraw" def task(): WeatherUnderground= open("C:\\Campbellsci\\LoggerNet\\CR1000_upload.dat", "r") csvReader = csv.reader(WeatherUnderground) for field in csvReader: a = (field[12]) b = (field[17]) c = (field[19]) d = (field[16]) e = (field[8]) f = (field[7]) g = (field[5]) h = (field[27]) i = (field[25]) j = (field[10]) k = (field[23]) l = (field[16]) winddir=a windspeedmph=b windgustmph=c windgustdir=d humidity=e dewptf=f tempf=g rainin=h dailyrainin=i baromin=j solarradiation=k softwaretype=1 r= requests.get( WUurl + WUcreds + date_str + "&winddir=" + str(winddir)+ "&windspeedmph=" + str(windspeedmph)+ "&windgustmph=" + str(windgustmph)+ "&windgustdir=" + str(windgustdir)+ "&humidity=" + str(humidity)+ "&dewptf=" + str(dewptf)+ "&tempf=" + str(tempf)+ "&rainin=" + str(rainin)+ "&dailyrainin=" + str(dailyrainin)+ "&baromin=" + str(baromin)+ "&solarradiation=" + str(solarradiation)+ str(softwaretype)+ action_str) timeout=60 print (time.strftime("%a, %d %b %Y %H:%M:%S"), flush=True) print("Received " + str(r.status_code) + " " + str(r.text), flush=True) print ("winddir= " + a, flush=True) print ("windspeedmph= " + b, flush=True) print ("windgustmph= " + c, flush=True) print ("windgustdir= " + d, flush=True) print ("humidity= " + e, flush=True) print ("dewptf= " + f, flush=True) print ("tempf= " + g, flush=True) print ("rainin= " + h, flush=True) print ("dailyrainin= " + i, flush=True) print ("baromin= " + j, flush=True) print ("solarradiation= " + k, flush=True) while True: try: task() time.sleep(60 - time.time() % 60) refresh() except: pass time.sleep(1) else: time.sleep(60) import requests import time import schedule import csv import urllib WUurl = "https://wow.metoffice.gov.uk/automaticreading?" siteid = "xxxxx" siteAuthenticationKey = "xxxxx" WUcreds = "siteid=" + siteid + "&siteAuthenticationKey="+ siteAuthenticationKey date_str = "&dateutc=now" action_str = "&action=updateraw" def task(): WeatherUnderground= open("C:\\Campbellsci\\LoggerNet\\CR1000_upload.dat", "r") csvReader = csv.reader(WeatherUnderground) for field in csvReader: a = (field[12]) b = (field[17]) c = (field[19]) d = (field[16]) e = (field[8]) f = (field[7]) g = (field[5]) h = (field[27]) i = (field[25]) j = (field[10]) k = (field[23]) l = (field[16]) winddir=a windspeedmph=b windgustmph=c windgustdir=d humidity=e dewptf=f tempf=g rainin=h dailyrainin=i baromin=j solarradiation=k softwaretype=1 r= requests.get( WUurl + WUcreds + date_str + "&winddir=" + str(winddir)+ "&windspeedmph=" + str(windspeedmph)+ "&windgustmph=" + str(windgustmph)+ "&windgustdir=" + str(windgustdir)+ "&humidity=" + str(humidity)+ "&dewptf=" + str(dewptf)+ "&tempf=" + str(tempf)+ "&rainin=" + str(rainin)+ "&dailyrainin=" + str(dailyrainin)+ "&baromin=" + str(baromin)+ "&solarradiation=" + str(solarradiation)+ str(softwaretype)+ action_str) print (time.strftime("%a, %d %b %Y %H:%M:%S"), flush=True) print("Received " + str(r.status_code) + " " + str(r.text), flush=True) print ("winddir= " + a, flush=True) print ("windspeedmph= " + b, flush=True) print ("windgustmph= " + c, flush=True) print ("windgustdir= " + d, flush=True) print ("humidity= " + e, flush=True) print ("dewptf= " + f, flush=True) print ("tempf= " + g, flush=True) print ("rainin= " + h, flush=True) print ("dailyrainin= " + i, flush=True) print ("baromin= " + j, flush=True) print ("solarradiation= " + k, flush=True) schedule.every(5).minutes.do(task) while True: try: schedule.run_pending() time.sleep(1) refresh() except: pass time.sleep(1) else: time.sleep(60) refresh() RE: Combining 2 or more scripts to one. - ndc85430 - Mar-30-2020 You should avoid having globals really. Make modules of your useful functions and then combining them is really easy because you just have to import the functions and call them with the appropriate values. RE: Combining 2 or more scripts to one. - Makada - Mar-30-2020 Hi, I managed to get it partially working. Task 1 and 2 are updating fine, but task 3(with other time.sleep) doesnt do anything. This is the code regarding the Scheduler . while True: try: task1() task2() time.sleep(60 - time.time() % 60) refresh() task3() time.sleep(300 - time.time() % 300) refresh() except: pass time.sleep(1) else: time.sleep(60) refresh() RE: Combining 2 or more scripts to one. - michael1789 - Mar-30-2020 do you have it scheduled? eg schedule.every().minute.at(":10").do(task3) ?
RE: Combining 2 or more scripts to one. - Makada - Mar-31-2020 Hi, Thanks for your reply. No, i found out the method below is more secure at every minute and if working, every 5 minuten. But with the code below, the 5 minutes (task 3, 300 seconds) schedule isnt working while True: try: task1() task2() time.sleep(60 - time.time() % 60) refresh() task3() time.sleep(300 - time.time() % 300) refresh() except: pass time.sleep(1) else: time.sleep(60) refresh() RE: Combining 2 or more scripts to one. - Makada - Apr-01-2020 Hi, What can i do to make the above working? And how can i get the code below to have the seconds set to zero? date_str = "&dateutc=now"Thanks. |