Как я могу записать только имя файла вместо записи всего пути?

#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')