【问题标题】:How can I write only the file name instead of writing the entire path?我怎样才能只写文件名而不是写整个路径?
【发布时间】:2021-10-15 07:26:18
【问题描述】:

我正在尝试使用 os.chdir,所以我只能在目录 (Table1.xlsx) 中写入文件名,而不是写入整个路径 (r"C:\Users\crist\word_automation\Summary_template\ Table1.xlsx"),但这段代码似乎不起作用。

from win32com import client
import os
os.chdir(r"C:\Users\crist\word_automation\Summary_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), 无)

【问题讨论】:

  • 您确定该文件确实在您命名的目录中吗?如果您在更改目录后尝试os.listdir('.'),是否看到您要查找的文件名?据我所知,您尝试解决问题的方式根本没有错误,因此这只能是您的问题无法转化为有用的 Stack Overflow 问题的结果。这不是技术支持。
  • 从头开始。似乎衍生进程的当前工作目录不一定与 Python 的相同。快速搜索发现了一个类似的问题,但不是正确的答案。我就不管这个了。
  • 我不完全确定您要做什么,但是您需要在目录中吗?我会改用 pathlib 库。 p = Path(r"C:\Users\crist\word_automation\Summary_template\filename.whatever")。然后,您可以在需要时使用p.name 获取文件名。或者,如果您也需要获取它,也可以使用完整路径。 docs.python.org/3/library/pathlib.html不知道它是否与您正在使用的其他库兼容,但可能是。

标签: python path operating-system


【解决方案1】:

尝试使用如下路径创建变量:

path = "desired/path/to/project"

然后每当您想与保存或加载文件进行交互时:

book.SaveAs(f'{path}/filename')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-27
    • 2021-12-16
    • 2015-02-06
    • 1970-01-01
    • 2020-11-28
    • 1970-01-01
    • 2016-01-31
    • 1970-01-01
    相关资源
    最近更新 更多