2014-03-06 3 views
0

사용자가 폴더를 드래그 앤 드롭하여 폴더 경로를 가져올 수있는 아래 코드가 있습니다. 그런 다음이 폴더 경로를 가져 와서 Popen을 사용하여 Windows의 명령 줄 응용 프로그램으로 전달합니다. 폴더 경로에 공백이있는 경우를 제외하고 모두 제대로 작동합니다. 그러면 실패합니다. 현재 win32api.GetShortPathName(folder_list)을 사용하여 DOS 8.3 사양으로 줄이는 방법을 사용하고 있지만 전체 절대 경로를 사용하고 싶습니다. 나는 명령 행 응용 프로그램이 공백이있는 경로를 사용한다는 것을 알고 있습니다. 경로에서 공백으로 작동하는 드래그 앤 드롭으로 배치 파일을 사용하기 때문입니다. 이스케이프 삽입 등을 시도했지만 여전히 운이 없다. 공백이있는 전체 폴더 경로에서 제대로 작동하려면 어떻게해야합니까?Wxpython 끌어서 놓기 폴더 경로, Windows에서 공백으로 작동하지 않는 Popen

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) 

답변

1

당신은 아마 파일 경로의 각 주위에 따옴표를 넣어해야합니다. 그것은 보통 작동합니다. 그래도 win32api.GetShortPathName은 좋은 트릭입니다. 그런 다음 당신은 당신의 코드에 언급 된

','.join(folder_list) 

n = ['"%s"' % x for x in folderlist] 

:

여기에 그것을 할 수있는 하나의 방법입니다.

+0

한 번 치료 한 후 올바른 장소에 넣어 환호했습니다. – speedyrazor