QProcess将字符串中的每个字母分别读取

时间:2013-09-28 20:51:29

标签: qt pyqt mkdir qprocess pyqt5

我正在尝试使用QProcess来运行mkdir命令(我正在使用linux)。该过程将在用户桌面上创建一个名为“output”的文件夹。代码如下所示:

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而不是使用整个字符串本身。 我试图在args变量上使用str(),但似乎没有任何效果。每次它只在目录中创建多个文件夹时,我都会运行该程序。

1 个答案:

答案 0 :(得分:0)

proc.start("mkdir", args)中,args应该是列表或元组。因为你传递一个字符串,PyQt正在将它转换成一个列表,使得Qt接收字符串中每个字符的列表。要解决此问题,请将args = "/Desktop/output/"更改为args = ("/Desktop/output/",)

BTW,Python mkdir()有一个function