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

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

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))

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

0
Alex Ironside 12 Апр 2019 в 14:09

2 ответа

Лучший ответ

Насколько мне известно, это невозможно, как вы предлагаете в одной операции. Мое решение будет состоять в том, чтобы перебирать строки файла, и, как только вы нажмете на // 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 должен содержать старый текст и новый *, вставленный в нужное место, которое затем можно записать в любой файл, который вы захотите.

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

1
Aarkon 12 Апр 2019 в 11:48

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

2
icy121 12 Апр 2019 в 11:45