我正在尝试用Python打开一个excel文件来显示其中满足的数据,就像我们用鼠标双击它一样。
我已经搜索了一段时间,但似乎所有页面都在讨论如何使用代码读取和编写excel文件,而不是向用户显示内容。
那么,我的问题有什么解决方案吗?
非常感谢。
答案 0 :(得分:14)
要在其默认应用程序中简单地打开文件,您可以使用
import os
file = "C:\\Documents\\file.txt"
os.startfile(file)
这将在与文件扩展名相关联的任何应用程序中打开文件。
然而,有一些缺点,因此如果您想对文件进行更高级的处理(例如稍后关闭),则需要更高级的方法。您可以尝试使用my question here的解决方案,其中显示如何使用subprocess.popen()
跟踪文件,然后关闭它。这是一般的想法:
>>> import psutil
>>> import subprocess
>>> doc = subprocess.Popen(["start", "/WAIT", "file.pdf"], shell=True) #Stores the open file as doc
>>> doc.poll() #Shows that the process still exists (will return 0 if the /WAIT argument is excluded from previous line)
>>> psutil.Process(doc.pid).get_children()[0].kill() #Kills the process
>>> doc.poll() #Shows that the process has been killed
0
>>>
这会保留您作为doc
对象打开的文件,以便以后可以轻松关闭
答案 1 :(得分:1)
为了补充wnnmaw的答案,subprocess.popen支持上下文管理和'with'运算符,它提供了一种漂亮,干净,Pythonic的方式来处理文件的打开和关闭。基本上,没有必要用这种方法显式关闭文件。
import psutil
import subprocess
with subprocess.Popen(["start", "/WAIT", "file.pdf"], shell=True) as doc:
# use 'doc' here just as you would the file itself
doc.poll()
doStuff(doc)
for line in readline(doc):
etc, etc...
# then just continue with the rest of your code.
'with'语句将自动处理您的开启和关闭,并且它很好且易于阅读。您必须记住的一个警告是,这一次只适用于一个文件。如果您的功能一次处理多个文件,最好手动处理打开/关闭。
如果您只想将控制权传递给Excel(完成后依赖最终用户在Excel中关闭文件),请参阅wnnmaw答案的第一部分。