0

QProcessコマンドを実行するために a を使用しようとしています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() を使用しようとしましたが、何も機能していないようです。プログラムを実行するディレクトリに複数のフォルダーを作成するたびに。

4

1 に答える 1

0

ではproc.start("mkdir", args)argsリストまたはタプルである必要があります。文字列を渡すため、PyQt はそれをリストに変換し、Qt が文字列の各文字のリストを受け取るようにします。問題を解決するには、に変更args = "/Desktop/output/"しますargs = ("/Desktop/output/",)

ところで、Python には の関数がありmkdir()ます。

于 2013-09-29T09:08:45.307 に答える