如何检测用户何时关闭文件?

时间:2016-02-10 10:20:17

标签: python file

我正在尝试创建一个Python程序,用户可以在其中将文本输入到文件中。关闭并保存文件后,我想打印其内容。如何检测用户何时保存并关闭文件?

这是我用来打开文本文件的代码。

def opentextbox():
    login = os.getlogin()
    file1 = open('C:/Users/'+login+'/enteryourmessagehere.txt', 'a')
    file1.close()
    subprocess.call(['notepad.exe', 'C:/Users/'+login+'/enteryourmessagehere.txt'])

opentextbox()

2 个答案:

答案 0 :(得分:1)

您可以在此处使用多线程。创建一个这样的线程:

import threading
thread1 = threading.Thread(target=function[, args=arguments])

其中函数可以是这样的:

import time
def function(file_handle):
  while 1:
    time.sleep(2) # Put your time in seconds accordingly
    if file_handle.closed:
      print "User closed the file"

在主要功能继续运行的同时在后台运行此线程。

或者你可以创建另一个线程,如果你愿意的话,把剩下的代码放在那里,同时运行两个线程,你就完成了。

答案 1 :(得分:0)

您可以使用subprocess.check_output()代替subprocess.call(),因为subprocess.check_output()等待程序退出。要获取文件的内容,您可以使用file.read()。以下是您的代码应该是什么样的:

def opentextbox():
    login = os.getlogin()
    subprocess.check_output(["notepad.exe", os.path.join("C:/Users", login, "enteryourmessagehere.txt")])
    file1 = open("enteryourmessagehere.txt", "r")
    contents = file1.read()
    print(contents)

我删除了您的file1 = open(...)file1.close()行,因为它们没有用处。您没有对该文件执行任何操作,因此您没有理由打开它。如果目的是确保文件存在,则可以使用os.path.isfile()。它不仅会检查文件是否存在,还会查看它是否是文件。