У меня очень простой скрипт VBA, в котором будет запущен скрипт Python с указанными аргументами (которые представляют собой пути к папкам, содержащие пробелы).Передача нескольких аргументов в VBA для запуска скрипта Python
код ниже
Dim path As String
path = Left(pdocinfo.path, InStrRev(pdocinfo.path, "\")) ' e.g C:\Temp\City Addresses
Dim pyLocation As String
pyLocation = "C:\Temp\filePath.py"
Dim strReports As String
strReports = path & "Reports\"
Dim strImages As String
strImages = path & "Images\"
Dim shellvar As Long
shellvar = shell("C:\Python26\ArcGIS10.0\python.exe " & pyLocation & " " & path & " " & strImages & " " & strReports , vbNormalFocus)
Однако когда сценарий Python запускается, то пути к файлам (strImages
, strReports
и path
) не получают разобраны правильно, потому что они содержат пробелы внутри пути к папке.
Каков правильный способ для Python интерпретировать несколько аргументов, которые являются динамическими переменными, которые также содержат пробелы?
Edit: Я попытался следующие, следуя от комментариев ниже
shellvar = Shell("C:\Python27\ArcGIS10.2\python.exe " & pyLocation & " " & """" & path & """" & " " & """" & strImages & """" & " " & """" & strReports & """", vbNormalFocus)
В результате я хотел бы это
Argument 0: C:\Temp\filePath.py
Argument 1: "C:\Temp\City Addresses"
Argument 2: "C:\Temp\City Addresses\Images"
Argument 3: "C:\Temp\City Addresses\Reports"
Возможно, вам придется окружить двойные кавычки. & "" "" & strImages & "" "" & Есть четыре двойных кавычки для создания одной двойной кавычки. – MatthewD