我如何在Python中使用lowecase文件path?

我有一个macros,它应该是一个文件的单元格的值,然后使用xlwings和VBS脚本将其转换为一个csv文件。 这个macros被分配给一个button。

下面是一个示例函数:

import subprocess from xlwings import Workbook, Range def extract_excel_sheet_to_csv(filename, sheet_name, working_dir, csv_filename): wb = Workbook.caller() new_filename = os.path.join(working_dir, filename) cmd = ''.join(['cscript extract_excel_sheet_to_csv.vbs "', new_filename, '" "', sheet_name, '" "', working_dir, '" "', csv_filename, '"']) cmd = cmd.encode("utf8") subprocess.call(cmd) filename = Range(sheet_arxikh, status_cell).value # Example data.xlsb sheet_name = u"Αρχείο" working_dir = os.path.dirname(wb.fullname) csv_filename = "data.csv" convert_file(filename, sheet_name, working_dir, csv_filename) 

wb.fullname给出了这样的内容: "c:\projects\buy_sell\data.xlsb" ,所以working_dir将是"c:\projects\buy_sell\" 。 这会在使用以下VBS脚本的文件path中造成问题。 如果我使用r"c:\projects\buy_sell"它工作正常。

这是我使用的VBS脚本:

 Set objFSO = CreateObject("Scripting.FileSystemObject") src_file = Wscript.Arguments.Item(0) sheet_name = Wscript.Arguments.Item(1) dir_name = Wscript.Arguments.Item(2) file_name = Wscript.Arguments.Item(3) WScript.Echo src_file WScript.Echo sheet_name WScript.Echo dir_name + "\" + file_name + ".csv" REM WScript.Echo dir_name REM WScript.Echo file_name Dim objExcel Set objExcel = CreateObject("Excel.Application") objExcel.Visible = False Dim objWorkbook Set objWorkbook = objExcel.Workbooks.open(src_file) objWorkbook.Sheets(sheet_name).Copy objExcel.DisplayAlerts = False objExcel.ActiveWorkbook.SaveAs dir_name + "\" + file_name + ".csv", 6 objWorkbook.Close False objExcel.Quit