【问题标题】:QProcess Reads each letter in string as separateQProcess 单独读取字符串中的每个字母
【发布时间】:2013-10-04 23:27:57
【问题描述】:

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

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() ,但似乎没有任何效果。每次它只是在我运行程序的目录中创建多个文件夹。

【问题讨论】:

    标签: qt pyqt mkdir qprocess pyqt5


    【解决方案1】:

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

    顺便说一句,Python 有一个 function 代表 mkdir()

    【讨论】:

    • 谢谢!我将改用 mkdir() 但我还有其他一些电话也发生了同样的事情,所以很高兴知道
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-08
    • 1970-01-01
    相关资源
    最近更新 更多