Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Qt: QLockFile зачем нужен? / 3 сообщений из 3, страница 1 из 1
09.06.2015, 02:03
    #38979664
Qt: QLockFile зачем нужен?
Код: 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
09.06.2015, 10:43
    #38979852
mikron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Qt: QLockFile зачем нужен?
Патриот Израиляно ведь в случае возникновения чп файл не будет удален,
верно
Патриот Израиля и тогда будет варнинг бокс выскакивать.
неверно. Сам проверь.
...
Рейтинг: 0 / 0
09.06.2015, 12:26
    #38980034
Qt: QLockFile зачем нужен?
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
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Qt: QLockFile зачем нужен? / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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