仅在打开文件时如何运行命令

时间:2020-05-05 21:21:58

标签: python if-statement operating-system

我正试图让一个文件更改其名称,只要另一个文件正在运行, 当我退出运行文件时,我希望将更改后的文件名恢复为原始名称

我仅使用的代码似乎打开了文件并忽略了它下面的命令, 非常感谢您的帮助。

articles = models.Article.objects.filter(user=user).annotate(user=user)

2 个答案:

答案 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.startfilehttps://docs.python.org/3/library/os.html)的Python文档未指定任何有关返回值的内容。这使我怀疑返回值是None或类似的值。如果是这样,那就可以解释为什么您的代码块没有运行。

该文档中的这一行应该会有所帮助:

startfile()在关联的应用程序启动后立即返回。无法等待应用程序关闭,也无法获取应用程序的退出状态。

因此,由于一旦进程终止,您将尝试执行某些操作(即,恢复文件名),因此您想使用与os.startfile不同的功能。我对Windows不太熟悉,所以也许其他人可以为您指明正确的方向。

相关问题