powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Qt: QLockFile зачем нужен?
3 сообщений из 3, страница 1 из 1
Qt: QLockFile зачем нужен?
    #38979664
Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
from PyQt5.QtCore import QLockFile
from PyQt5.QtWidgets import QApplication, QMessageBox
import time

lock_file = QLockFile("file.lock")
if not lock_file.tryLock():
    a = QApplication([])
    QMessageBox.warning(None, "Ошибка повторного запуска",
                        "Приложение уже запущено!")

time.sleep(15) # имитируем работу приложения 15 секунд
# файл будет удален
lock_file.unlock()



я такой примерчик набросал. но ведь в случае возникновения чп файл не будет удален, и тогда будет варнинг бокс выскакивать. зачем вообще используется QLockFile. я думал сначала для блокировки файлов при записи, но кути не умеет в блокировку
...
Рейтинг: 0 / 0
Qt: QLockFile зачем нужен?
    #38979852
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Патриот Израиляно ведь в случае возникновения чп файл не будет удален,
верно
Патриот Израиля и тогда будет варнинг бокс выскакивать.
неверно. Сам проверь.
...
Рейтинг: 0 / 0
Qt: QLockFile зачем нужен?
    #38980034
mikronПатриот Израиляно ведь в случае возникновения чп файл не будет удален,
верно
Патриот Израиля и тогда будет варнинг бокс выскакивать.
неверно. Сам проверь.

Зачем вообще QLockFile нужен? Какое ему применение?

Код: 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.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
import logging
from PyQt5.QtNetwork import QNetworkCookieJar, QNetworkCookie
from PyQt5.QtCore import QFile, QTemporaryFile


class FileCookieJar(QNetworkCookieJar):
    def __init__(self, filename, parent=None):
        super().__init__(parent)
        self.log = logging.getLogger(self.__class__.__name__)
        self.filename = filename
        self.load()

    def load(self):
        f = QFile(self.filename)

        if not f.open(QFile.ReadOnly):
            self.log.warning(f.errorString())
            return

        data = f.readAll()
        cookies = QNetworkCookie.parseCookies(data)
        self.setAllCookies(cookies)
        self.log.info("cookies loaded")

    def save(self):
        # В Qt нет блокировки записи?
        # Записываем данные во временный файл
        temp = QTemporaryFile()
        # Предотвращаем автоматическое удаление файла
        temp.setAutoRemove(False)

        # A QTemporaryFile will always be opened in
        # QIODevice::ReadWrite mode...
        if not temp.open():
            self.log.warning(temp.errorString())
            return

        for cookie in self.allCookies():
            temp.write(cookie.toRawForm())
            temp.write(b'\n')

        # Удаляем исходный файл
        source = QFile(self.filename)

        if not source.remove():
            self.log.warning(source.errorString())

        # Переименовываем временный файл в исходный
        if not temp.rename(self.filename):
            self.log.warning(temp.errorString())
        else:
            self.log.info("cookies saved")

    def __del__(self):
        # Так же метод save можно вызывать в setCookiesForUrl
        self.save()



Я хотел с помощью него залочить файл на время записи (сохранения cookies), но у меня не получилось.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Qt: QLockFile зачем нужен?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]