我正在尝试创建一个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()
答案 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()
。它不仅会检查文件是否存在,还会查看它是否是文件。