我正试图让一个文件更改其名称,只要另一个文件正在运行, 当我退出运行文件时,我希望将更改后的文件名恢复为原始名称
我仅使用的代码似乎打开了文件并忽略了它下面的命令, 非常感谢您的帮助。
articles = models.Article.objects.filter(user=user).annotate(user=user)
答案 0 :(得分:0)
类似的方法可能有用,但这可能不是最好的主意:
编辑:添加了打印和time.sleep以每10秒检查一次
import os
import psutil
import time
process_name = 'some_process'
file_name = 'some_file_path'
replacement = 'some_replacement_file_name'
while True:
print(f'looking for {process_name}')
time.sleep(10)
if process_name in (p.name() for p in psutil.process_iter()):
print(f'{process_name} started')
os.rename(file_name, replacement)
while True:
time.sleep(10)
if not process_name in (p.name() for p in psutil.process_iter()):
print(f'{process_name} stopped')
os.rename(replacement, file_name)
break
答案 1 :(得分:0)
我没有Windows电脑,因此无法测试。但是,os.startfile
(https://docs.python.org/3/library/os.html)的Python文档未指定任何有关返回值的内容。这使我怀疑返回值是None
或类似的值。如果是这样,那就可以解释为什么您的代码块没有运行。
该文档中的这一行应该会有所帮助:
startfile()在关联的应用程序启动后立即返回。无法等待应用程序关闭,也无法获取应用程序的退出状态。
因此,由于一旦进程终止,您将尝试执行某些操作(即,恢复文件名),因此您想使用与os.startfile
不同的功能。我对Windows不太熟悉,所以也许其他人可以为您指明正确的方向。