#python #shell
#python #оболочка
Вопрос:
Почему я получаю сообщение об ошибке: «размер буфера должен быть целым числом»
после этой строки:
pid2 = subprocess.Popen(["mv"],glob.glob(os.path.basename(filename) '[0-9]*'),folder);
Это просто команда mv с расширением оболочки блога.
Я хочу, чтобы что-то вроде mv filename[0-9]* folder
Ответ №1:
Прежде всего, это Python, поэтому вам не нужна точка с запятой в конце строки. Затем вы хотите указать один аргумент, т.Е.
pid2 = subprocess.Popen(["mv"]
glob.glob(os.path.basename(filename) '[0-9]*')
[folder])
В противном случае вы указываете результат glob.glob
в качестве второго аргумента ( bufsize
) of subprocess.Popen
.
Также обратите внимание, что вызов mv
не требуется, Python уже имеет функциональность для перемещения файлов, реализованных в shutil.move
:
for f in glob.glob(os.path.basename(filename) '[0-9]*'):
shutil.move(f, folder)
Ответ №2:
В качестве первого аргумента Popen()
принимает либо строку, либо список аргументов. Вы просто передаете ["mv"]
; glob.glob(...)
и folder
интерпретируются как второй и третий аргументы subprocess.Popen()
, которые являются bufsize
и executable
.
Попробуйте:
args = ["mv"] [glob.glob(os.path.basename(filename) '[0-9]*')] [folder]
pid2 = subprocess.Popen(args)