Python новичок здесь пытается узнать, как сделать мой код более упорядоченным. Извините заранее за длинный вопрос, я не знаю, сколько информации вам нужно, чтобы помочь мне.
У меня есть кусок кода, который делает именно то, что мне нужно, но я чувствую, что он должен быть более компактным.
В основном мой код принимает файл, умножает одно число, затем пишет файл в другой каталог каждый раз, когда он проходит через код.
Чтобы код выполнял то, что я хочу, мне в основном нужно повторить код 9x (один раз для каждого элемента в списке множителей), потому что я хочу, чтобы результат каждый раз записывался в другой каталог.
Есть ли способ сжать этот код? Код должен взять 0-й индекс и записать в FileLocation1. Затем возьмите 1-й индекс и запишите в FileLocation2. Вероятно, это вопрос использования для l oop, но я не знаю, где его поставить: (
Код выглядит следующим образом:
#Identifying path where the file is that I want to multiply
path = 'C:\\DirectoryIWantToTakeFileFrom'
#Define the multipliers in the list below
multipliers = [0.01, 0.1, 0.25, 0.5, 1, 1.5, 1.7, 1.85, 2]
all_data0 = []
with open(path, 'r') as file_handler:
for multiplier in multipliers:
for line in file_handler.readlines():
if line.strip():
each_line_data = line.split()
old_debiet = each_line_data[-3]
new_debiet = float(old_debiet) * multipliers[0]
each_line_data[-3] = str(new_debiet)
new_each_line_data = ' '.join(each_line_data)
all_data0.append(new_each_line_data)
with open('C:\\WriteLocation1', 'w') as file_handler:
for item in all_data0:
file_handler.write("{}\n".format(item))
#Now I proceed to execute exactly the same code but I store the data in a different list (all_data1) and I change the writing directory
all_data1 = []
with open(path, 'r') as file_handler:
for multiplier in multipliers:
for line in file_handler.readlines():
if line.strip():
each_line_data = line.split()
old_debiet = each_line_data[-3]
new_debiet = float(old_debiet) * multipliers[1]
each_line_data[-3] = str(new_debiet)
new_each_line_data = ' '.join(each_line_data)
all_data1.append(new_each_line_data)
with open('C:\\WriteLocation2', 'w') as file_handler:
for item in all_data1:
file_handler.write("{}\n".format(item))
#And now I do this 7 more times, for WriteLocation3, 4, 5, 6, 7, 8 and 9.