Добавление текста в середине файла - PullRequest
0 голосов
/ 12 апреля 2019

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

actions.js - добавить до}} 1003 *

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
};

redurs.js- добавить const выше 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?

Я сделал это добавить к action.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))

Но я не знаю, как сделать другие

Ответы [ 2 ]

2 голосов
/ 12 апреля 2019

Прочитайте файл, нарежьте строку по нужному индексу, объедините по порядку, а затем запишите в файл с курсором в 0. Пусть x.txt будет вашим файлом.«export» в методе 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)

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

Here's the output

1 голос
/ 12 апреля 2019

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

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 должен содержать старый текст иновый * вставлен в нужное место, которое вы можете затем записать в любой файл, который вам нравится.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...