76 Stimmen

prüfen, ob eine Datei in Python geöffnet ist

In meiner Anwendung schreibe ich in eine Exceldatei. Nach dem Schreiben kann der Benutzer die Datei anzeigen, indem er sie öffnet. Wenn der Benutzer jedoch vergisst, die Datei vor dem weiteren Schreiben zu schließen, sollte eine Warnmeldung erscheinen. Ich brauche also eine Möglichkeit, um zu prüfen, ob die Datei vor dem Schreibvorgang geöffnet ist. Könnten Sie mir einen Python-Code zur Verfügung stellen, der diese Aufgabe erfüllt?

2voto

jabba Punkte 445

Verwendung von

try:
with open("path", "r") as file:#or just open

kann zu Problemen führen, wenn die Datei von anderen Prozessen geöffnet wird (z. B. wenn der Benutzer sie manuell öffnet). Sie können Ihr Problem mit der win32com-Bibliothek lösen. Der folgende Code prüft, ob Excel-Dateien geöffnet sind, und öffnet eine neue, wenn keine von ihnen mit dem Namen der betreffenden Datei übereinstimmt.

import win32com.client as win32
xl = win32.gencache.EnsureDispatch('Excel.Application')

my_workbook = "wb_name.xls"
xlPath="my_wb_path//" + my_workbook

if xl.Workbooks.Count > 0:
    # if none of opened workbooks matches the name, openes my_workbook 
    if not any(i.Name == my_workbook for i in xl.Workbooks): 
        xl.Workbooks.Open(Filename=xlPath)
        xl.Visible = True
#no workbooks found, opening
else:  
    xl.Workbooks.Open(Filename=xlPath)
    xl.Visible = True

'xl.Visible = True is not necessary, used just for convenience'

Ich hoffe, das hilft

-2voto

Dexter Punkte 759
if myfile.closed == False:
   print("File is still open ################")

-3voto

ADITYA JYOTI Punkte 44

Verwenden Sie einfach diese Funktion. Sie wird jede bereits geöffnete Excel-Datei schließen

import os

def close():

    try:
        os.system('TASKKILL /F /IM excel.exe')

    except Exception:
        print("KU")

close()

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X