2013-09-28 37 views
0

我試圖使用QProcess來運行mkdir命令(我使用的是linux)。該過程將在用戶桌面上創建一個名爲「輸出」的文件夾。代碼如下所示:QProcess將字符串中的每個字母單獨讀取

def mkOutput(): 
    # get the user's environmental variables 
    env = QtCore.QProcessEnvironment.systemEnvironment() 
    proc = QtCore.QProcess() 
    proc.setProcessEnvironment(env) 

    # find the HOME variable, append it to args 
    HOME = env.value('HOME', defaultValue='./') 
    args = "/Desktop/output/" 

    args = HOME+args 

    proc.setStandardOutputFile('out.txt') 
    proc.setStandardErrorFile('err.txt') 
    proc.start("mkdir", args) 
    proc.waitForFinished() 

out.txt是空的,而err.txt寫着:

/usr/bin/mkdir: cannot create directory ‘/’: File exists 
/usr/bin/mkdir: cannot create directory ‘o’: File exists 
/usr/bin/mkdir: cannot create directory ‘t’: File exists 
/usr/bin/mkdir: cannot create directory ‘p’: File exists 
/usr/bin/mkdir: cannot create directory ‘u’: File exists 
/usr/bin/mkdir: cannot create directory ‘t’: File exists 
/usr/bin/mkdir: cannot create directory ‘/’: File exists 

出於某種原因,它試圖在論證每個字母運行mkdir,而不是使用全字符串本身。 我試圖使用str()在args變量上,但似乎沒有任何工作。每次它只是在我運行該程序的目錄中創建多個文件夾。

回答

0

proc.start("mkdir", args)args應該是一個列表或元組。由於您所傳遞的字符串,PyQt的是將它轉換成一個列表,使Qt的接收每個字符串的字符的列表。要解決該問題,改變args = "/Desktop/output/"args = ("/Desktop/output/",)

BTW,Python有mkdir()function

+0

謝謝!我將使用mkdir()來代替,但我不得不在同樣的事情正在發生,以及使的好,知道一些其他電話 – CogDissonance

相關問題