2013-09-28 8 views
0

QProcess을 사용하여 mkdir 명령을 실행하려고합니다 (저는 Linux를 사용하고 있습니다). 이 프로세스는 사용자의 데스크탑에 '출력'이라는 폴더를 만듭니다. 코드는 다음과 같습니다QProcess 문자열의 각 문자를 별도로 읽습니다.

/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를 실행하려고하기보다는 전체를 사용하고 어떤 이유 : err.txt가 읽는 동안

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가 비어 문자열 자체. args 변수에 str()을 사용하려고했지만 아무 것도 작동하지 않는 것 같습니다. 때마다 그냥 디렉터리에서 프로그램을 실행하는 여러 폴더를 만듭니다.

답변

0

proc.start("mkdir", args)에서 args은 목록 또는 튜플이어야합니다. 문자열을 전달하기 때문에, PyQt는이를 문자열로 변환하여 Qt가 문자열의 각 문자 목록을 수신하게합니다. 문제를 해결하려면 args = "/Desktop/output/"args = ("/Desktop/output/",)

BTW로 변경하십시오. 파이썬은 mkdir()의 경우 function입니다.

+0

고마워요! 대신 mkdir()을 사용할 것입니다. 그러나 똑같은 일이 일어나고 있다는 것을 알기에 좋은 곳이 있습니다. – CogDissonance