2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 Как с помощью python редактировать строки файлов .py
Сообщение11.11.2020, 22:32 


27/09/19
189
Добрый вечер! Я гуглил и гуглил, на выходе только получал информацию о том - как редактировать файлы .txt, .pdf, но не нашел информации по поводу того - как редактировать файлы питона с помощью самого питона. То есть видел решения такого плана.

код: [ скачать ] [ спрятать ]
Используется синтаксис Python
# -*- coding: utf-8 -*-
# Открываем файл только для чтения
f = open('snake.txt', 'r')
lines = f.readlines()
lines[4] = 'Питон' + '\n'
 
# Закрываем файл
f.close()
 
# Открываем файл для записи
save_changes = open('snake.txt', 'w')
 
# Сохраняем список строк
save_changes.writelines(lines)
 
# Закрываем файл
save_changes.close()
 


Этот вариант попробовал, но все привело к тому, что кодировка слетела в исходном файле питона, могу приложить то, что вышло, если нужно.
Какую цель преследую? Не хочется листать длинный код, чтобы поменять значение одной переменной (значение которой нужно будет часто менять). Для этого и хочу сделать программу.
Подскажите, пожалуйста, как правильно нагуглить то, что мне требуется или что можно предпринять, чтобы решить вопрос? (извините за глупые вопросы).

 Профиль  
                  
 
 Re: Как с помощью python редактировать строки файлов .py
Сообщение11.11.2020, 23:34 
Заслуженный участник


31/12/05
1480
https://docs.python.org/3/library/configparser.html

 Профиль  
                  
 
 Re: Как с помощью python редактировать строки файлов .py
Сообщение12.11.2020, 04:14 


21/05/16
4292
Аделаида
kot-obormot в сообщении #1491759 писал(а):
Какую цель преследую? Не хочется листать длинный код, чтобы поменять значение одной переменной (значение которой нужно будет часто менять).

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

 Профиль  
                  
 
 Re: Как с помощью python редактировать строки файлов .py
Сообщение12.11.2020, 13:07 


27/09/19
189
tolstopuz в сообщении #1491774 писал(а):
https://docs.python.org/3/library/configparser.html

Спасибо, видимо это решается не так просто, я пока еще не осилил, тяжеловато читается, мало слишком комментариев, но я теперь примерно понимаю - в какую сторону думать!

-- 12.11.2020, 13:09 --

kotenok gav в сообщении #1491784 писал(а):
kot-obormot в сообщении #1491759 писал(а):
Какую цель преследую? Не хочется листать длинный код, чтобы поменять значение одной переменной (значение которой нужно будет часто менять).

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

Спасибо, а как в этом файле обращаться к "захардкоженным" локальным переменным (которые можно сделать глобальными, но тогда придется переименовывать локальные (которые обозначаются одной и той же буквой).

 Профиль  
                  
 
 Re: Как с помощью python редактировать строки файлов .py
Сообщение12.11.2020, 15:32 
Заслуженный участник
Аватара пользователя


28/07/09
1178
Запишите вашу переменную в файл CSV/JSON, их распарсить проще простого

-- Чт ноя 12, 2020 15:34:13 --

Хотя, если изменяющий переменную код у вас тоже на питоне (так ведь?), то можно обойтись вообще без лишних файлов

 Профиль  
                  
 
 Re: Как с помощью python редактировать строки файлов .py
Сообщение12.11.2020, 15:48 
Заслуженный участник


26/05/14
981
Хороший дизайн - когда вам не надо править исходный код, так как код (постоянная часть задачи) отделён от данных (переменная часть задачи).
Но если вы уверены в том что делаете, то есть специальные редакторы командной строки. Например: sed.

 Профиль  
                  
 
 Re: Как с помощью python редактировать строки файлов .py
Сообщение12.11.2020, 16:14 
Заслуженный участник


31/12/05
1480
kot-obormot в сообщении #1491840 писал(а):
Спасибо, видимо это решается не так просто

Проще некуда - четыре строки в одном файле и две в другом.

https://habr.com/ru/post/485236/

 Профиль  
                  
 
 Re: Как с помощью python редактировать строки файлов .py
Сообщение12.11.2020, 16:19 


21/05/16
4292
Аделаида
kot-obormot в сообщении #1491840 писал(а):
Спасибо, а как в этом файле обращаться к "захардкоженным" локальным переменным (которые можно сделать глобальными, но тогда придется переименовывать локальные (которые обозначаются одной и той же буквой).

Берём файл abc.py, в нём пишем a = 3. Берём файл main.py, в нём пишем import abc и a = abc.a. Всё.

 Профиль  
                  
 
 Re: Как с помощью python редактировать строки файлов .py
Сообщение12.11.2020, 18:40 


27/09/19
189
tolstopuz в сообщении #1491881 писал(а):
kot-obormot в сообщении #1491840 писал(а):
Спасибо, видимо это решается не так просто

Проще некуда - четыре строки в одном файле и две в другом.

https://habr.com/ru/post/485236/


Спасибо! Только почему-то выдает ошибку. Я создал файл settings.ini с таким содержимым, как и по ссылке

Используется синтаксис INI
# settings.ini
[Twitter]
username="johndoe"
password="johndoespassword"
token="....."
 


В той же папке создал файл parsing.py

Используется синтаксис Python
import configparser  # импортируем библиотеку

config = configparser.ConfigParser()  # создаём объекта парсера
config.read("settings.ini")  # читаем конфиг

print(config["Twitter"]["username"])  # обращаемся как к обычному словарю!
# 'johndoe'
 


Изображение

Компилятор говорит, что во всем виноват твиттер.

-- 12.11.2020, 18:41 --

Legioner93 в сообщении #1491875 писал(а):
Хотя, если изменяющий переменную код у вас тоже на питоне (так ведь?), то можно обойтись вообще без лишних файлов

А это как?

-- 12.11.2020, 18:53 --

slavav в сообщении #1491878 писал(а):
Хороший дизайн - когда вам не надо править исходный код, так как код (постоянная часть задачи) отделён от данных (переменная часть задачи).
Но если вы уверены в том что делаете, то есть специальные редакторы командной строки. Например: sed.


У меня код примерно такой по структуре. Как здесь можно отделить, если переменные локальные?

код: [ скачать ] [ спрятать ]
Используется синтаксис Python

import #....

x=int(input())

if x==1:

        y=1
        z=1
        k=1
        n=1
        f(x)
        h(z,k)
        g(n)

if x==2:

        y=2
        z=4
        k=7
        n=11
        f(x)
        g(z,k)
        h(n)

....

if x==15:

        y=2
        z=4
        k=7
        n=11
        f(x)
        g(z,k)
        h(n)
        ....
     
 


-- 12.11.2020, 18:55 --

kotenok gav в сообщении #1491882 писал(а):
kot-obormot в сообщении #1491840 писал(а):
Спасибо, а как в этом файле обращаться к "захардкоженным" локальным переменным (которые можно сделать глобальными, но тогда придется переименовывать локальные (которые обозначаются одной и той же буквой).

Берём файл abc.py, в нём пишем a = 3. Берём файл main.py, в нём пишем import abc и a = abc.a. Всё.

Спасибо! А это вроде как один из вариантов решения!

 Профиль  
                  
 
 Re: Как с помощью python редактировать строки файлов .py
Сообщение12.11.2020, 19:04 


21/05/16
4292
Аделаида
kot-obormot в сообщении #1491906 писал(а):
У меня код примерно такой по структуре. Как здесь можно отделить, если переменные локальные?

Здесь переменные как раз не локальные, а глобальные. (А функции надо вообще вынести из условия для упрощения кода)

 Профиль  
                  
 
 Re: Как с помощью python редактировать строки файлов .py
Сообщение12.11.2020, 20:38 
Заслуженный участник


31/12/05
1480
kot-obormot в сообщении #1491906 писал(а):
Изображение

Вы сказали ему, что settings.ini надо искать в текущей папке, а сами находитесь в другой.

 Профиль  
                  
 
 Re: Как с помощью python редактировать строки файлов .py
Сообщение12.11.2020, 20:52 


27/09/19
189
tolstopuz в сообщении #1491926 писал(а):
Вы сказали ему, что settings.ini надо искать в текущей папке, а сами находитесь в другой.

Изображение

-- 12.11.2020, 21:05 --

kotenok gav в сообщении #1491909 писал(а):
Здесь переменные как раз не локальные, а глобальные. (А функции надо вообще вынести из условия для упрощения кода)

Определение функций я отдельно вынес в другой файл .ру
А здесь в каждом случае я вызываю, в основном, разные функции (может криво описал структуру). Разве можно как-то вынести вызов функций?
А точно они являются глобальными, если в каждом отдельном случае одни и те же буквы принимают разные значения?

 Профиль  
                  
 
 Re: Как с помощью python редактировать строки файлов .py
Сообщение12.11.2020, 21:28 
Заслуженный участник


31/12/05
1480
kot-obormot в сообщении #1491906 писал(а):
Изображение

У вас текущая папка C:\Users\e8921 (написано в первой строке), а settings.ini лежит в другой папке, рядом с исполняемым файлом.

 Профиль  
                  
 
 Re: Как с помощью python редактировать строки файлов .py
Сообщение12.11.2020, 22:30 


27/09/19
189
tolstopuz в сообщении #1491931 писал(а):
У вас текущая папка C:\Users\e8921 (написано в первой строке), а settings.ini лежит в другой папке, рядом с исполняемым файлом.

Сейчас я поместил settings.ini в в папку с "[url]C:\Program Files\Python\lib\configparser.py[/url]", но ошибка от этого не изменилась.
Ведь ошибка возникла в стандартном файле библиотеки configparser.py. В 960 строчке.

Используется синтаксис Python
  def __getitem__(self, key):                                                     #958
        if key != self.default_section and not self.has_section(key): #959
            raise KeyError(key)                                                       #960
        return self._proxies[key]                                                    #961
 


У меня есть подозрения, что может просто не подошли пароль и логин для твиттер? Ведь я там даже не зарегистрирован. Там стоят рандомные пароль и логин с сайта. Правда все равно я не очень понимаю как этот "твиттер" как шаблон поможет решить задачу, да и что делать дальше, чтобы исправить ошибки и научиться редактировать строчки.

 Профиль  
                  
 
 Re: Как с помощью python редактировать строки файлов .py
Сообщение13.11.2020, 00:12 
Заслуженный участник


31/12/05
1480
kot-obormot в сообщении #1491938 писал(а):
Сейчас я поместил settings.ini в в папку с "[url]C:\Program Files\Python\lib\configparser.py[/url]"
Зачем???

У вас есть ваш файл C:\Users\e8921\OneDrive\Рабочий стол\Парсинг\parsing.py.
Рядом с ним есть файл C:\Users\e8921\OneDrive\Рабочий стол\Парсинг\settings.ini.

Но запускаете parsing.py, находясь в папке C:\Users\e8921. Когда вы делаете config.read("settings.ini"), он ищет settings.ini в вашей текущей папке, то есть C:\Users\e8921\settings.ini. Естественно, его там нет.

Надо запускать parsing.py, находясь в нужной папке C:\Users\e8921\OneDrive\Рабочий стол\Парсинг. Прочитайте про команду chdir.

Если совсем все плохо с самодисциплиной, можно переложить settings.ini в папку C:\Users\e8921, но по большому счету это не выход.

-- Пт ноя 13, 2020 00:13:45 --

kot-obormot в сообщении #1491938 писал(а):
да и что делать дальше, чтобы исправить ошибки и научиться редактировать строчки.
Не надо редактировать строчки в файле .py. Надо в этом месте файла .py читать данные из конфига, а редактировать уже в конфиге.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 25 ]  На страницу 1, 2  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group