У меня есть py-файл, подобный следующему:
final_data = ','.join(ordered_data.iloc[0].astype(str).values.tolist())
runtime = boto3.client('runtime.sagemaker')
response = runtime.invoke_endpoint(EndpointName='xgboost-whatever', #Endpoint mark
ContentType='text/csv',
Body=final_data)
Я хочу заменить строку на EndpointName для другой строки. Принимая во внимание вопрос SO Поиск и замена строки в файле на Python Я кодировал это:
def replace(file_path, subst):
#Create temp file
fh, abs_path = mkstemp()
with fdopen(fh,'w') as new_file:
with open(file_path) as old_file:
for line in old_file:
if re.search('response = runtime.invoke_endpoint(.*?)#Endpoint mark',line):
new_file.write(line.replace(line, subst))
else:
new_file.write(line)
#Remove original file
remove(file_path)
#Move new file
move(abs_path, file_path)
file_path = '/home/whatever'
subst = " response = runtime.invoke_endpoint(EndpointName='xgboost-otro', #Endpoint mark "
replace(file_path, subst)
Однако выполнение предыдущего кода дает мне нечто иное, чем то, что я былищу:
final_data = ','.join(ordered_data.iloc[0].astype(str).values.tolist())
runtime = boto3.client('runtime.sagemaker')
response = runtime.invoke_endpoint(EndpointName='xgboost-otro', #Endpoint mark ContentType='text/csv',
Body=final_data)
Поэтому я теряю строку ContentType, которая преобразуется в комментарий. Если я добавлю символ \n
в конце subst
, он удалит строку ContentType. Как я мог решить это?