Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
1 / 1 / 0
Регистрация: 12.10.2015
Сообщений: 36

Перезапись текстового файла

10.06.2023, 08:57. Показов 669. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, есть 1-ая-программа-парсер который записывает в первой строке текстового файла данные, через определённое время перезаписывает на более актуальные данные в текстовом файле.

И есть другая 2-ая программа которая обращается к этому текстовому файлу и пишет данные в столбце.

Проблема вот в чём, иногда в столбце проскакивают пустые строки, это проблема не 2-ой программы, так как я выключал первую и тестил вторую и тогда пустых строк не было. Я так понимаю что у первой программы происходит перезапись и в этот момент вторая обращается к текстовому файлу и ловит пустой файл и как следствие 2-ая видит пишет пустую строку. Можно как то это исправить?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.06.2023, 08:57
Ответы с готовыми решениями:

Перезапись json файла
Здравствуйте! Имеется json файл, хранящий: { "Пользователь 1":{ "Имя": "Петров Станислав Николаевич", ...

Создание, фильтрация, перезапись файла. Спасите люди добрые!
Буду очень благодарен если поможете написать эту задачау на питоне. Сам туго соображаю. 1. Записать данные в текстовый файл (с...

Перезапись файла .txt
Обновление темы про таблицу. Вот такой код работает, но каждый раз перезаписывает результат. Что нужно сделать, чтобы он...

7
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
10.06.2023, 16:46
Пиши в БД
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
11.06.2023, 07:10
Я сомневаюсь, что та же sqlite позволит писать одновременно нескольким процессам.

Так что придётся взять СУБД посерьёзнее: mysql, PG

Добавлено через 55 секунд
Рекомендую PostgreSQL15
1
290 / 205 / 68
Регистрация: 18.09.2019
Сообщений: 407
Записей в блоге: 58
11.06.2023, 08:44
BlogMaster, вот если бы первая программа могла отправлять данные, записываемые в первую строку указанного текстового файла, ещё и в stdout, то можно было бы перенаправить этот поток данных на stdin второй программы, которая могла бы благополучно их оттуда считывать и затем запихивать их уже в свой файл.
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
11.06.2023, 08:45
Цитата Сообщение от iamvic Посмотреть сообщение
от если бы первая программа могла отправлять данные, записываемые в первую строку указанного текстового файла, ещё и в stdout, то можно было бы перенаправить этот поток данных на stdin второй программы,
Могу предположить, что это работает асинхронно либо запускается кроном, так что смысла городить пайп нет.
0
 Аватар для volodin661
6686 / 2278 / 347
Регистрация: 10.12.2013
Сообщений: 7,873
12.06.2023, 00:48
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
Я сомневаюсь, что та же sqlite позволит писать одновременно нескольким процессам.
не позволит, но ничего, данные процедуры по concurrency на запись в доке описаны, подождут пару миллисекунд, не развалятся.
1
Нарушающий
417 / 305 / 46
Регистрация: 13.04.2022
Сообщений: 1,759
12.06.2023, 01:35
Если все с одним файлом, я вижу два варианта:
- исключительный доступ. Читатель всегда закрывает файл, не держит открытым, а писатель запрещает читать пока не закончил. Я не уверен что все файловые системы так позволят (write, deny_reads)
- Если оба процесса держат файл открытым, то придумай самодельную синхронизацию. Например, писатель ставить timestamp в начале и в конце строки. Если читатель забрал строку, и передний/задний timestamp не совпали - читай заново.
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
12.06.2023, 08:34
Цитата Сообщение от volodin661 Посмотреть сообщение
concurrency на запись в доке описаны, подождут пару миллисекунд, не развалятся.
Интересно, тогда и можно sqlite обойтись, тем более что он почти всегда встроен в питон из коробки.

Добавлено через 38 минут
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# 1-ая-программа-парсер который записывает в первой строке
# текстового файла данные, через определённое время
# перезаписывает на более актуальные данные в текстовом файле.
import sqlite3
 
kwargs = {
    'isolation_level': None,
#    'autocommit': True, #  Python 3.12
}
 
with sqlite3.connect('data.db', **kwargs) as con: 
    con.set_trace_callback(print)
    con.execute('''\
create table if not exists main.data (
    id integer primary key,
    url text not null unique,
    result text null,
    result2 text null
)''')
    #cur = con.cursor()
    for id, url in con.execute('select id, url from main.data'):
        result = parser(url)
        con.execute('''\
update main.data set
    result = :result
where
    id = :id
''', dict(result=result, id=id))
    #cur.close()
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# И есть другая 2-ая программа которая обращается
# к этому текстовому файлу и пишет данные в столбце.
import sqlite3
 
kwargs = {
    'isolation_level': None,
#    'autocommit': True, #  Python 3.12
}
 
with sqlite3.connect('data.db', **kwargs) as con: 
    con.set_trace_callback(print)
    #cur = con.cursor()
    for id, url, result in con.execute('select id, url, result from main.data'):
        result2 = process(url, result)
        con.execute('''\
update main.data set
    result2 = :result2
where
    id = :id
''', dict(result2=result2, id=id))
    #cur.close()
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.06.2023, 08:34
Помогаю со студенческими работами здесь

Перезапись текстового файла
Здравствуйте. Хотел на сайте сделать функцию "добавить новость". Все сделал, но вот только новость не создается. Помогите пожалуйста. Вот...

Перезапись текстового файла
Очень нуждаюсь в вашей помощи!!!Как записать в текстовый файл данные с формы с помощью класса? Я сделал вот так,но он выдает ошибку! ...

Перезапись текстового файла
Имеется бат файл. Пример: echo %time% >> time.txt Вызываем повторно: echo %time% >> time.txt

Перезапись текстового файла
есть текстовый файл нужно перезаписать только логин и пароль данными из textview а все остальное сохранить

Чтение и перезапись текстового файла
здравствуйте , помогите пожалуйста, суть проблемы в следующем, есть некий исходный txt файл содержащий некую строку(к примеру 0000), нужна...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru