#python #path #operating-system
Вопрос:
Я пытаюсь использовать os.chdir, поэтому я могу записать только имя файла в каталоге(Table1.xlsx) вместо того, чтобы писать весь путь(r»C:Userscristword_automationSummary_templateTable1.xlsx»), но этот код, похоже, не работает.
from win32com import client
import os
os.chdir(r"C:Userscristword_automationSummary_template")
excel = client.Dispatch("Excel.Application")
word = client.Dispatch("Word.Application")
doc = word.Documents.Open('Table1.docx')
book = excel.Workbooks.Open('Table1.xlsx')
sheet = book.Worksheets(1)
sheet.Range("A1:D5").Copy()
wdRange = doc.Content
wdRange.Collapse(0)
wdRange.PasteExcelTable(False, True, False)
os.remove('Table2.xlsx')
book.SaveAs('Table2.xlsx')
book.Close()
excel.Quit()
doc.SaveAs('TableOne.docx')
doc.Close()
word.Quit()
Я получаю эту ошибку:
com_error: (-2147352567, «Произошло исключение.», (0, «Microsoft Excel», » Извините, мы не смогли найти Table1.xlsx. Возможно ли, что он был перемещен, переименован или удален?», ‘xlmain11.chm’, 0, -2146827284), Нет)
Комментарии:
1. Вы убедились, что этот файл действительно находится в указанном вами каталоге? Если вы попытаетесь
os.listdir('.')
после изменения каталога, увидите ли вы имя файла, которое вы ищете? Насколько я могу судить, в том, как вы пытались решить проблему, нет ничего принципиально неправильного, так что это может быть только результатом проблемы с вашей стороны, которая не может быть превращена в полезный вопрос о переполнении стека. Это не техническая поддержка.2. Вычеркни это. Похоже, что текущий рабочий каталог порожденного процесса не обязательно совпадает с каталогом Python. Быстрый поиск нашел аналогичный вопрос, но не дал правильного ответа. Я оставлю это в покое.
3. Я не совсем понимаю, что вы пытаетесь сделать, но есть ли причина, по которой вам нужно быть в каталоге? Вместо этого я бы использовал библиотеку pathlib.
p = Path(r"C:Userscristword_automationSummary_templatefilename.whatever")
. Затем вы можете сделатьp.name
это, чтобы получить имя файла, когда вам это нужно. Или вы можете использовать полный путь, если вам тоже нужно его получить. docs.python.org/3/library/pathlib.html Не знаю, будет ли он совместим с другими библиотеками, которые вы используете, но это может быть так.
Ответ №1:
Попробуйте Создать Переменную с таким путем, как:
path = "desired/path/to/project"
а затем всякий раз, когда вы хотите взаимодействовать с сохранением или загрузкой файлов:
book.SaveAs(f'{path}/filename')