Как я могу имитировать "заблокированный" файл (тот, который имеет блокировку записи)
Я пытаюсь отладить проблему, когда пользователи иногда блокируют файлы, которые они пытаются открыть. В коде есть правильная обработка исключений, но пользователи все еще сообщают о появлении сообщений об ошибках. Как я могу имитировать заблокированный файл, чтобы я мог сам его отладить?
EDIT: для Windows.
Ответы
Ответ 1
зависит, но в случае MS блокировки слов
если вы удивляетесь, если ваши файлы блокировки приложений и не блокируют блокировки:
просто измените бит вашего приложения (чтобы создать testapp) и никогда не закрывайте файл (и держите его runnig)
Ответ 2
попробуйте следующее:
( >&2 pause ) >> yourfile.txt
>>
открывает yourfile.txt
в режиме добавления
см. this для справки
Ответ 3
Я использовал функцию LockFileEx из Windows API для записи unittest в Python. Это хорошо сработало для меня (shutil.copy() с заблокированной целью не работает).
import win32con
import win32file
import pywintypes
p = "yourfile.txt"
f = file(p, "w")
hfile = win32file._get_osfhandle(f.fileno())
flags = win32con.LOCKFILE_EXCLUSIVE_LOCK | win32con.LOCKFILE_FAIL_IMMEDIATELY
win32file.LockFileEx(hfile, flags, 0, 0xffff0000, pywintypes.OVERLAPPED())
Смотрите: https://msdn.microsoft.com/en-us/library/windows/desktop/aa365203%28v=vs.85%29.aspx