.Popen 一个 pdf 然后在关闭后删除文件
.Popen a pdf then delete file once it is closed
我需要 .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 之前放置一个睡眠函数,我会收到一条错误消息,说它无法删除打开的文件,否则它会在打开之前以某种方式删除导致打开错误。我可以根据第一个错误进行某种循环,不断检查文件是否打开,如果没有打开,则将其删除?
虽然您打开了 PDF reader,但您并没有等待它完成。您可以等到程序退出后再尝试删除。几个 subprocess
函数执行此操作,但 run
正在考虑现代方法。
subprocess.run(file_path, shell=True)
如果子流程实际上是 PDF reader,则此方法有效。有时中间程序运行 reader 然后退出,破坏了这个解决方案。
我需要 .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 之前放置一个睡眠函数,我会收到一条错误消息,说它无法删除打开的文件,否则它会在打开之前以某种方式删除导致打开错误。我可以根据第一个错误进行某种循环,不断检查文件是否打开,如果没有打开,则将其删除?
虽然您打开了 PDF reader,但您并没有等待它完成。您可以等到程序退出后再尝试删除。几个 subprocess
函数执行此操作,但 run
正在考虑现代方法。
subprocess.run(file_path, shell=True)
如果子流程实际上是 PDF reader,则此方法有效。有时中间程序运行 reader 然后退出,破坏了这个解决方案。