Попытка закрыть файл после, если это успешно? - PullRequest
0 голосов
/ 20 июня 2019

Я пытаюсь реализовать быстрый код, который проверяет, открыт ли файл Excel. Когда файл открыт, IOError работает и сообщает мне, что файл открыт. Я могу закрыть и снова открыть файл на этом этапе. Если у меня нет открытого файла, и если я вызываю subprocess.call () или просто щелкаю по нему, я выдаю ошибку.

Почему попытка повреждает его, если нет ошибки?

Я попытался закрыть файл после попытки, но это тоже не работает.

file_path = (r'C:\users\Desktop\Build-Temp.xlsx')

if os.path.exists(file_path) is True:
    report_closed = True
    try:
        report_opcl = open(file_path, 'w+')
#           report_opcl.close()
    except IOError:
        print("file open already")
        report_closed = False

#            if report_closed is True:
#            with report_opcl:
#                subprocess.call(file_path,shell=True)

Ошибки Excel не может открыть файл 'Build-Temp.xlsx', поскольку формат файла или расширение файла недопустимы. Убедитесь, что файл не был поврежден и что расширение файла соответствует формату файла.

1 Ответ

1 голос
/ 20 июня 2019

Открытие файла с помощью 'w' приведет к удалению содержимого файла. В документах это называется «усечением». Вы можете избежать повреждения, используя вместо этого 'a' (не проверено).

Во всяком случае, это не сработает. К тому времени, когда вы проверите, что report_closed истинно, другой процесс мог открыть файл.

Я думаю, что вы пытаетесь решить неразрешимую проблему. Невозможно гарантировать, что файл (идентифицированный по его пути) будет доступен другому процессу в будущем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...