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