我想打开一个文件,该文件由另一个应用程序定期写入。此应用程序无法修改。因此,我只想在我知道该文件未被其他应用程序写入时才打开该文件。
有python方式可以做到这一点吗?否则,如何在Unix和Windows中实现呢?
编辑 :我将尝试澄清。 有没有办法检查当前文件是否已被另一个应用程序打开?
我想从这个问题开始。这些其他应用程序现在是否读写无关紧要。
我意识到这可能与操作系统有关,所以现在可能与python无关。
您的python脚本是否希望打开文件进行写入或读取?旧应用程序是在写操作之间打开和关闭文件,还是保持打开状态?
理解遗留应用程序正在执行的操作以及您的python脚本正在尝试实现的功能非常重要。
此功能区域高度依赖于OS,并且不幸的是,您无法控制旧版应用程序这一事实使事情变得更加困难。到底有没有Python或非Python的方法可能是您最少要担心的问题-
难题是您尝试实现的目标是否可能。
更新
好的,因此(从您的评论中)知道:
旧版应用程序每隔X分钟打开和关闭文件,但我不想假设在t = t_0 + n * X + eps时它已经关闭了文件。
然后更改问题的参数。实际上,在给出一些假设的情况下,可以通过与OS无关的方式来完成此操作,也可以结合使用OS和OS无关的技术来完成此操作。:)
T
几秒钟(例如,打开文件,执行一次写入然后关闭文件),然后重新打开每秒钟或多或少X
,X
大于2 * T
。
stat
文件now()
,产生D
T
<= D
<X
然后打开文件并执行所需的操作T
/X
降低而增加。在* nix上,您可能必须仔细检查/etc/ntpd.conf
时间步长和摆率配置的正确性(请参阅修补程序)。对于Windows,请参见MSDN。lsof
) 来找出旧应用程序中打开的文件lsof
或者在某些系统上,只需检查符号链接/proc/<pid>/fd/<fdes>
指向 哪个文件
更新2
如果赞成“检查旧版应用程序是否已打开文件”(易于出现竞争状况的侵入性方法),则可以通过以下方法解决所述竞争状况:
lsof
或ProcessExplorer
)问题内容: 我需要测试从1到1000的每个数字是3的倍数还是5的倍数。我认为我要这样做的方式是将数字除以3,如果结果是整数,则它将是3的倍数。与5相同。 如何测试数字是否为整数? 这是我当前的代码: 问题答案: 您可以使用模运算符执行此操作, 当且仅当是的精确倍数时,计算结果为true 。在小学数学中,这被称为除法运算的余数。 在您当前的方法中,您执行除法,结果将是 如果使用整数除法,则始终为整数
如果这在Flutter中很难实现,有没有人可以为这个功能建议一些其他的语言或代码? 谢谢!!
当我启动音频/屏幕录像机并打开我的录音机应用程序并启动用于录制音频的服务时,我遇到错误该应用程序崩溃。 我不知道为什么我会面临这个问题。 来自logcat的错误跟踪 录制服务.java 录音活动 这就是我尝试在应用程序中开始录制时发生的情况 链接如下。 显示我的应用程序崩溃
rank ▲ ✰ vote url 4 1266 285 929 url 用Python如何一个文件是否存在? 不用try:语句可以一个文件存在 如果不确定文件存不存在,可以这样做: import os.path os.path.isfile(fname)
问题内容: 我到处都在寻找这个答案,但是找不到。 我正在尝试提出一个脚本,该脚本将搜索特定的子文件夹,然后检查其是否包含任何文件,如果有,则写出文件夹的路径。我已经弄清楚了子文件夹搜索部分,但是对文件的检查让我很困惑。 我发现了关于如何检查文件夹是否为空的多种建议,并且尝试修改脚本以检查文件夹是否为空,但是我没有得到正确的结果。 这是最接近的脚本: 这将列出所有空的子文件夹,但是如果我尝试将其更改
嗯,我做了这个脚本,它支持日志一些击键一段时间保存在一个文件中,然后擦除文件,如果用户想要然而当脚本tryes删除文件我得到这个错误。 Traceback(最近一次调用最后一次):文件"C:\用户\Tormenter\Desktop\S. D. A. K. L\pregunta.py",第34行,os.remove(path 2"\"name)PermissionError:[WinError 3