【发布时间】:2020-11-25 20:26:50
【问题描述】:
我需要 .Popen 一个 pdf,让我的用户查看、打印、做他们需要做的任何事情,然后一旦关闭,删除文件。目前我尝试的是这样的:
def open_file():
try:
subprocess.Popen(file_path, shell=True)
except:
print(exception)
finally:
if os.path.exists(file_path):
os.remove(file_path)
print("File successfully removed.")
我需要的是更像这样的东西:
def open_file():
try:
subprocess.Popen(file_path, shell=True)
except:
print(exception)
finally:
if os.path.exists(file_path):
while file_path.IS_OPEN:
sleep(1)
if file_path.IS_NOT_OPEN:
os.remove(file_path)
print("File successfully removed.")
或类似的东西。我还是个新手,所以我确定我的语法是错误的。这可能吗?
我发现如果我在第一个示例的 os.remove 之前放置一个 sleep 函数,我会收到一个错误,说它无法删除打开的文件,否则它会在打开之前以某种方式删除,导致打开错误。我可以根据第一个错误进行某种循环,不断检查文件是否打开,如果没有,将其删除?
【问题讨论】:
-
您可以将 pdf 复制到临时驱动器中,打开临时驱动器并删除源。在某些时候关闭会话/重新启动时临时文件将被删除
-
好的,我正在使用一个临时文件,但我读到一些关于临时文件的内容说“开发人员应该自己清理”。这是我第一次尝试临时文件及其工作方式。
-
您使用的是哪个操作系统?您可以执行
Popen(file_path, shell=True).wait(),它将在子进程上等待......这可能不起作用,因为有时中间进程会启动 pdf 阅读器然后退出,从而阻止您的等待。 -
我用的是Win10
-
效果很好!
标签: python subprocess popen delete-file