我有下面的代码,它允许用户拖放文件夹以获取文件夹路径。然后我使用这个文件夹路径并使用它通过 Popen 传递到 Windows 中的命令行应用程序。这一切都很好,除非文件夹路径中有空格,然后失败。我目前正在通过使用win32api.GetShortPathName(folder_list)
将它们缩短为 DOS 8.3 规范来解决这个问题,但我想使用完整的绝对路径。我知道命令行应用程序采用带空格的路径,因为我还使用带有拖放功能的批处理文件,该文件适用于路径中的空格。我试过插入转义符等,仍然没有运气。我怎样才能使它与带有空格的完整文件夹路径正常工作?
class SubmissionPane(wx.Panel):
def __init__(self, parent, queue_control):
wx.Panel.__init__(self, parent, -1)
self.parent = parent
self.queue_control = queue_control
self.selected_folder = None
self.txtTitle = wx.TextCtrl(self, pos=(125, 70), size=(215, 25), style= wx.SUNKEN_BORDER, value="Enter Series Title Here")
self.txtTitle.Show(False)
self.drop_target = MyFileDropTarget(self)
self.SetDropTarget(self.drop_target)
def SetSubmissionFolders(self, folder_list):
"""Called by the FileDropTarget when files are dropped"""
print "Setting submission folders", folder_list
self.tc_files.SetValue(','.join(folder_list))
self.selected_folders = folder_list
class MyFileDropTarget(wx.FileDropTarget):
""""""
def __init__(self, window):
wx.FileDropTarget.__init__(self)
print "Creating a drop file target..."
self.window = window
def OnDropFiles(self, x, y, filenames):
self.window.SetSubmissionFolders(filenames)
然后我将其提交给 Popen,如下所示:
command1 = commandLineApplication + folder_list
process = Popen(command1, shell=True, stdin=PIPE)