2 回答
TA贡献1998条经验 获得超6个赞
我们可以做的第一件事就是将公共代码提取为函数。该函数的参数将是在每个假设中发生变化的变量 -乘法循环。在您的示例中,除了行new_debiet = float(old_debiet) * multipliers[0]和with open('C:\\WriteLocation1', 'w') as file_handler:. 所以这些可能是函数的参数。
现在让我们定义函数。定义可能如下所示:
def multiply_and_write(multiplier, file_to_write):
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) * multiplier
each_line_data[-3] = str(new_debiet)
new_each_line_data = ' '.join(each_line_data)
all_data0.append(new_each_line_data)
with open(file_to_write, 'w') as file_handler:
for item in all_data0:
file_handler.write("{}\n".format(item))
请注意上面指示的行的变化。
现在,我们将为每个乘数和每个文件位置调用此函数。假设我们有乘数列表和文件位置:
multipliers = [0.01, 0.1, 0.25, 0.5, 1, 1.5, 1.7, 1.85, 2] # length of both lists is assumed to be the same
file_locations = ['C:\\WriteLocation1', 'C:\\WriteLocation2', ...]
现在,我们遍历这些列表并调用我们之前定义的函数,如下所示:
for i in range(len(multipliers)):
multiply_and_write(multipliers[i], file_locations[i])
希望这可以帮助!
PS:在提高代码效率方面可能会有更多的调整。但是,我想传达的一点是使用函数将有助于减少代码。
TA贡献1872条经验 获得超3个赞
将每个路径字符串放在一个列表中,然后循环该列表:)
所以是这样的:
list_of_write_locations = ['C:\\WriteLocation1', 'C:\\Writelocation2', ... ]
for location in list_of_write_locations:
with open(location, 'w') as file_handler:
添加回答
举报