如何使用 python 关闭在 excel 应用程序中打开的一个特定 csv 文件,并给出该文件的路径?

How do I close one specific csv file that is open in the excel application on windows using python, given the path to that file?

我有一个将数据写入 csv 文件的脚本,但如果该 csv 文件处于打开状态(在 Windows 10 上的 excel 应用程序中),则会生成 PermissionError。这是有道理的。

我希望能够捕获 PermissionError 然后关闭文件,特别是关闭在 Windows 10 上的 excel 应用程序中打开的那个 csv 文件。我不想关闭整个 excel 应用程序,而是识别特定文件然后关闭它,让 excel 中打开的任何其他文件保持不变。

我研究过使用 subprocess 来做到这一点,但我不清楚如何实现。这似乎是最有可能的路线,除非有人可以建议更好的路线。

最终代码看起来像这样:

import time
import pandas as pd

path_to_file = 'path/to/file.csv'

df = pd.DataFrame()

try:
    
    df.to_csv(path_to_file) # file that is currently open
    
except PermissionError:
    
    print('Shutting the Open File')
    time.sleep(5)
    shut_the_open_file(path_to_file) # need to figure out this code for closing the currently open file
    df.to_csv(path_to_file)

谢谢!

您可以使用名为 xlwings

的 python 模块与 Excel 交互

使用 API 遍历所有打开的工作簿并按名称关闭所需的工作簿。

pip install xlwings

import xlwings as xl

for app in xl.apps:
    for book in app.books:
        if book.fullname == r"your_file_path":
            book.close()