Почему я получаю сообщение об ошибке: "buffsize musth be integer" для команды mv shell - PullRequest
1 голос
/ 24 октября 2011

Почему я получаю сообщение об ошибке: "buffsize musth be integer"

в следующей строке:

pid2 = subprocess.Popen(["mv"],glob.glob(os.path.basename(filename)+'[0-9]*'),folder);

Это просто команда mv с расширением оболочки блога.

Я хочу что-то вроде mv filename[0-9]* folder

Ответы [ 2 ]

3 голосов
/ 24 октября 2011

Прежде всего, это Python, поэтому вам не нужна точка с запятой в конце строки. Затем вам нужно предоставить один аргумент, т. Е.

pid2 = subprocess.Popen(["mv"] +
                        glob.glob(os.path.basename(filename)+'[0-9]*') +
                        [folder])

В противном случае вы указываете результат glob.glob в качестве второго аргумента (bufsize) subprocess.Popen.

Также обратите внимание, что вызов mv не является необходимым, Python уже имеет функцию для перемещения файлов, реализованную в shutil.move:

for f in glob.glob(os.path.basename(filename)+'[0-9]*'):
    shutil.move(f, folder)
0 голосов
/ 24 октября 2011

В качестве первого аргумента Popen() принимает либо строку, либо список аргументов.Вы просто проходите ["mv"];glob.glob(...) и folder интерпретируются как второй и третий аргументы для subprocess.Popen(), которые bufsize и executable.

Try:

args = ["mv"] + [glob.glob(os.path.basename(filename)+'[0-9]*')] + [folder]
pid2 = subprocess.Popen(args)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...