i具有以下代码,该代码允许用户拖放文件夹以获取文件夹路径。然后,我使用此文件夹路径,并使用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)
您可能只需要在每个文件路径上放引号。通常有效。win32api.getShortPathName是一个整洁的技巧。
这是一种方法:
n = ['"%s"' % x for x in folderlist]
然后做
','.join(folder_list)
您在代码中提到。