如何模拟“锁定”文件(具有写锁的文件)
Posted
技术标签:
【中文标题】如何模拟“锁定”文件(具有写锁的文件)【英文标题】:How can I simulate a "locked" file (one which has a write lock) 【发布时间】:2011-08-17 03:52:52 【问题描述】:我正在尝试调试用户偶尔会尝试打开的锁定文件的问题。该代码似乎具有正确的异常处理,但用户仍然报告看到错误消息。如何模拟锁定的文件以便我自己调试?
编辑:对于 Windows。
【问题讨论】:
他们看到了什么错误信息?当他们收到错误消息时,您确定他们已锁定文件吗? @Ralph,不,我不知道它是否是一个锁定文件,但似乎最有可能。我还认为它可能是通过丢失连接的网络访问的文件。这只是我调试的第一步。 还要检查是否有任何间歇性系统进程在此期间运行,可能会锁定文件夹。 对Superuser 上的同一问题的一些非常有用的答案,包括仅从命令行调用notepad > fileToLock
的答案(尽管它当然会覆盖文件内容,但对于模拟锁很有用)。
【参考方案1】:
试试这个:
( >&2 pause ) >> yourfile.txt
>>
在追加模式下打开yourfile.txt
参考this
【讨论】:
我真的很喜欢这个。比使用大型 MS 软件锁定我的文件更容易【参考方案2】:取决于,但以防万一,MS 字锁 如果您想知道您的应用程序是否锁定文件并且它不释放锁定: 只需修改一点你的应用程序(创建一个 testapp)并且永远不要关闭文件(并保持它运行)
【讨论】:
Word 或 Excel 将成为我的建议,所以一个赞成票当之无愧... :) 路易斯,谢谢你的帮助。我会试试这个方法。 :)【参考方案3】:我使用 Windows API 中的 LockFileEx 函数在 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
【讨论】:
【参考方案4】:我正在使用这个命令提示符
type yourfile.txt | more
在yourfile.txt
中插入一个很长的“几页”文本,并希望通过| more
管道来批量插入。
但是文件似乎被锁定了,为什么?
【讨论】:
以上是关于如何模拟“锁定”文件(具有写锁的文件)的主要内容,如果未能解决你的问题,请参考以下文章