@ImZero

Как сменить одну из переменных в отдельном файле?

Python = 3.9.8

Предположим, что у меня есть два файла "names.py" и "main.py"

names.py:
name1 = "Dima"

name2 = "Masha"

name3 = "Elena"


Как мне из main.py изменить значение name2 (Например на "Egor")?
  • Вопрос задан
  • 87 просмотров
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
Что значит "изменить переменную в файле"?
Одно дело, если файл был импортирован, и тебе нужно изменить переменную в нём. Это легко.
import names
names.name1 = 'Абдурахман ибн Хоттаб'

Вот только такое изменение не сохранится в файл. Если тебя это устраивает, то вопрос закрыт.

А если ты хочешь, чтобы оно сохранялось, то всё намного хуже, потому что ты пытаешься использовать питоновский файл как файл конфигурации. Это не дело. И ещё хуже то, что твои переменные name1, name2, name3 намекают, что тебе на самом деле нужен список.
Тогда у тебя получится что-то такое
# names.json
["Дима", "Маша", "Елена"]

# main.py
import json  # чтобы легко и удобно сохранять структуры данных в файл
import sys  # чтобы узнать, где лежит main.py, и сохранить рядом
from pathlib import Path  # чтобы работать с путями к файлам

MAIN_PY = Path(sys.argv[0])  # путь до main.py
MAIN_DIR = MAIN_PY.parent.resolve()  # путь до папки, где лежит main.py
CFG = MAIN_DIR / 'names.json'  # путь до файла, куда сохраняем данные

with CFG.open('rt', encoding='utf-8') as cfg:  # открываем на чтение
    names = json.load(cfg)  # читаем всё содержимое файла
# пользуемся полученными данными - списком имён
print(names) 
names[0] = "Абдурахман ибн Хоттаб"
# сохраняем список обратно
with CFG.open('wt', encoding='utf-8') as cfg:  # открываем на запись
    json.dump(  # пишем всё содержимое списка в файл
        names,  # что будет содержимым файла
        cfg,  # в какой файл записать
        ensure_ascii=False,  # чтобы не заменял кириллицу на коды символов
        indent=2,  # чтобы были красивые отступы. Если убрать, файл будет весь в одну строку.
    )
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Everything_is_bad
У тебя базовое непонимание, чтобы изменить значение переменной в файле, надо открыть файл, вписать значения и сохранить. Но еще есть runtime, в его момент, значения хранятся в памяти, ты меняешь их как хочешь, только по окончанию runtime, всё придет к изначальному состоянию. Короче, описывай общую задачу, из-за которой у тебя такая хотелка возникла.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы