заменить строку условием в python - PullRequest
0 голосов
/ 06 января 2020

Привет, все, что я пытаюсь создать скрипт, который вносит изменения в мой файл моделей, и мне нужно, чтобы он изменил тип текстового поля на Bit1BooleanField, когда тип поля является предположением, я попробовал этот sultion, но после замены первого элемента все пропущено up

мой models.py образец:

class BaseCase(models.Model):
    base_case_name = models.CharField(primary_key=True, max_length=255)
    version = models.CharField(max_length=255)
    default = TextField(blank=True, null=True)  # This field type is a guess.


class ConfigApiMatrix(models.Model):
    bloc = models.CharField(primary_key=True, max_length=255)
    page = models.CharField(max_length=255)
    activate_model_api = models.TextField(blank=True, null=True)  # This field type is a guess.
    module_api_break_point = models.TextField(blank=True, null=True)
    first_api_to_run_after_save = models.TextField(blank=True, null=True)

решение, которое я попробовал:

import re

with open('SFP/models.py', 'r') as myfile:
  txt = myfile.read()

word = "Field\(blank=True, null=True\)  # This field type is a guess."
for match in re.finditer(word, txt):
    i=match.start()
    txt = txt[:i-4-len(txt)] + "Bit1Boolean" + txt[i-len(txt):]
``

1 Ответ

1 голос
/ 07 января 2020

Это должно быть решением для вас

search = 'TextField(blank=True, null=True)  # This field type is a guess.'
replace = 'Bit1BooleanField(blank=True, null=True)  # This field type is a guess.'

with open('SFP/models.py', "r") as f:
  txt = f.read()
  replaced_data = txt.replace(search, replace)
with open('SFP/models.py', "w") as f:
  f.write(replaced_data)
...