Добавление текста в середину файла

#python #file

#python #файл

Вопрос:

У меня есть эти файлы:

actions.js — добавить перед }

 import {constants} from "./constants";

export const setUser = (value) => ({
    type: constants.SET_USER,
    payload: value,
});
//here
  

constants.js — добавить в конец

 export const constants = {
    SET_USER: "SET_USER",
    //here
};
  

reducers.js — добавьте константу над export combineReducers объектом и внутри него

 import {constants} from "./constants";
import {combineReducers} from "redux";
const user = (state = null, action) => action.type === constants.SET_USER ? action.payload : state;
//here
export const reducers = combineReducers({
    user,
    // here
})
  

И я хочу добавить код в эти файлы в тех местах, где я поместил //здесь . Как я могу это сделать с помощью Python? Я знаю, что могу писать поверх файла, open('file', 'w').write('string') но как я могу на самом деле добавить текст, не теряя и не перезаписывая файл? Я хочу добавить текст в существующий файл, а не создавать файл или перезаписывать его. Я хочу, чтобы в нем был старый текст, и добавьте к нему новый текст. Как я могу добиться этого с помощью Python?

Я заставил его добавить к actions.js вот так:

 import sys
import os

reducer = sys.argv[1]

open("actions.js","a").write("""export const set{reducer} = (value) => ({{
    type: constants.{constant},
    payload: value,
}});
""".format(reducer=reducer.capitalize(), constant=constant))
  

Но я понятия не имею, как сделать остальные

Комментарии:

1. Вы гуглили add the text to the existing file, not to create the file ?

2. Я вроде вижу, как добавить текст, но я не вижу, как добавить текст в середину файла

3. Прочитайте файл, нарежьте строку по нужному индексу, объедините по порядку, а затем запишите в файл с курсором в 0.

Ответ №1:

Прочитайте файл, нарежьте строку по нужному индексу, объедините по порядку, а затем запишите в файл с курсором в 0. Пусть x.txt будьте вашим досье. «экспорт» в методе index() здесь относится к уникальному неповторяющемуся слову. Вы можете использовать уникальные комментарии, чтобы разрезать строку на соответствующие позиции!

 with open("x.txt","r ") as f:
  old=f.read()
  print(old)

  constant_text= "What you want to add??"

  result=old[0:old.index("export")]   constant_text   old[old.index("export"):]
  # print(result)
  f.seek(0)
  f.write(result)
  print("######################################")
  print(result)
  

Убедитесь, что ключевые слова индекса уникальны, если вы хотите нарезать в нескольких местах с помощью ключевых слов!

Вот результат

Ответ №2:

Насколько мне известно, это невозможно так, как вы предлагаете, за одну операцию. Моим решением было бы перебирать строки файла, и как только вы нажмете на свой // here — marker, вставьте код.

 new_content = ""
with open(file_name) as f:
    for line in f.readlines():
        new_content  = line
        if line.strip() == "// here":
            new_content  = text_to_insert
  

После этого цикла new_content следует сохранить старый текст и вставить новый * в нужное место, который затем вы можете записать в любой файл, который вам нравится.

* предполагая, что ваш ввод правильно отформатирован, включая разрывы строк и так далее.