import re # Slider Task # List of sliders num_sliders = 50 # Total number of sliders percent_sliders_to_be_moved_high = 80 # Share of sliders that have to be moved in the High Effort treatment percent_sliders_to_be_moved_low = 20 # Share of sliders that have to be moved in the Low Effort treatment # Read in the file with open('models.py', 'r', encoding='utf-8') as f: filedata = f.read() total_number_of_sliders_old = re.search('num_sliders = (\d+) # Total number of sliders', filedata) percent_sliders_to_be_moved_high_old = re.search('percent_sliders_to_be_moved_high = (\d+) # Share of sliders that have to be moved in the High Effort treatment', filedata) percent_sliders_to_be_moved_low_old = re.search('percent_sliders_to_be_moved_low = (\d+) # Share of sliders that have to be moved in the Low Effort treatment', filedata) total_number_of_sliders_old = total_number_of_sliders_old[0] percent_sliders_to_be_moved_high_old = percent_sliders_to_be_moved_high_old[0] percent_sliders_to_be_moved_low_old = percent_sliders_to_be_moved_low_old[0] print(total_number_of_sliders_old,"; ",percent_sliders_to_be_moved_high_old,"; ",percent_sliders_to_be_moved_low_old) # Replace the target string filedata = filedata.replace(total_number_of_sliders_old, 'num_sliders = '+str(num_sliders)+' # Total number of sliders') filedata = filedata.replace(percent_sliders_to_be_moved_high_old, 'percent_sliders_to_be_moved_high = '+str(percent_sliders_to_be_moved_high)+' # Share of sliders that have to be moved in the High Effort treatment') filedata = filedata.replace(percent_sliders_to_be_moved_low_old, 'percent_sliders_to_be_moved_low = '+str(percent_sliders_to_be_moved_low)+' # Share of sliders that have to be moved in the Low Effort treatment') # Write the file out again with open('models.py', 'w', encoding='utf-8') as f: f.write(filedata) # Read in the new file with open('models.py', 'r', encoding='utf-8') as f: filedata = f.read() result = re.search('num_sliders = (\d+) # Total number of sliders', filedata) total_number_of_sliders_old = total_number_of_sliders_old[0] print(total_number_of_sliders_old) # Sliders High Effort # Create Slider Fields slider_list_high = [] for i in range(1, num_sliders + 1): slider_list_high.append('slider_high' + str(i)) print(slider_list_high) with open('slider_fields.txt', 'w', encoding='utf-8') as f: f.write('# Insert_Sliders_High_Start\r') for slider, slider_id in zip(slider_list_high,range(1,len(slider_list_high)+1)): with open('slider_fields.txt', 'a', encoding='utf-8') as f: f.write( ' '+slider + " = make_slider_high('"+"Slider "+str(slider_id)+":')\r") with open('slider_fields.txt', 'a', encoding='utf-8') as f: f.write(' # Insert_Sliders_High_End') with open('slider_fields.txt', 'r', encoding='utf-8') as f: new_slider_fields = f.read() # Replace Slider Fields in models.py # Read in the models.py file with open('models.py', 'r', encoding='utf-8') as f: old_model = f.read() old_slider_fields = re.search('(?s)(# Insert_Sliders_High_Start)(.*)(# Insert_Sliders_High_End)', old_model) old_slider_fields = old_slider_fields[0] print(old_slider_fields) # Replace the target string new_model = old_model.replace(old_slider_fields, new_slider_fields) # Write the file out again with open('models.py', 'w', encoding='utf-8') as f: f.write(new_model) # Read in the models.py file with open('models.py', 'r', encoding='utf-8') as f: new_model = f.read() new_slider_fields = re.search('(?s)(?<=# Insert_Sliders_High_Start)(.*)(?=# Insert_Sliders_High_End)', new_model) new_slider_fields = new_slider_fields[0] print(new_slider_fields) # Sliders Low Effort # Create Slider Fields slider_list_low = [] for i in range(1, num_sliders + 1): slider_list_low.append('slider_low' + str(i)) print(slider_list_low) with open('slider_fields.txt', 'w', encoding='utf-8') as f: f.write('# Insert_Sliders_Low_Start\r') for slider, slider_id in zip(slider_list_low,range(1,len(slider_list_high)+1)): with open('slider_fields.txt', 'a', encoding='utf-8') as f: f.write( ' '+slider + " = make_slider_low('"+"Slider "+str(slider_id)+":')\r") with open('slider_fields.txt', 'a', encoding='utf-8') as f: f.write(' # Insert_Sliders_Low_End') with open('slider_fields.txt', 'r', encoding='utf-8') as f: new_slider_fields = f.read() # Replace Slider Fields in models.py # Read in the models.py file with open('models.py', 'r', encoding='utf-8') as f: old_model = f.read() old_slider_fields = re.search('(?s)(# Insert_Sliders_Low_Start)(.*)(# Insert_Sliders_Low_End)', old_model) old_slider_fields = old_slider_fields[0] print(old_slider_fields) # Replace the target string new_model = old_model.replace(old_slider_fields, new_slider_fields) # Write the file out again with open('models.py', 'w', encoding='utf-8') as f: f.write(new_model) # Read in the models.py file with open('models.py', 'r', encoding='utf-8') as f: new_model = f.read() new_slider_fields = re.search('(?s)(?<=# Insert_Sliders_Low_Start)(.*)(?=# Insert_Sliders_Low_End)', new_model) new_slider_fields = new_slider_fields[0] print(new_slider_fields)