Выполнение командной строки Python - PullRequest
0 голосов
/ 05 сентября 2011

Я пытаюсь переименовать набор файлов pdf на моем рабочем столе, используя простой скрипт на python.Я как-то не очень успешен.Мой текущий код:

import os,subprocess
path = "/Users/armed/Desktop/"
for file in os.listdir(path)
    command = ['mv', '*.pdf' , 'test.pdf']    // mv Command to rename files to test.pdf
    subprocess.call(command)

Выходные данные, которые я получаю для этого кода, равны 1, и файлы не переименовываются.Эта же команда работает при выполнении в терминале.Я использую Mac (если это поможет)

Ответы [ 2 ]

6 голосов
/ 05 сентября 2011

Эта же команда работает при выполнении в терминале.

За исключением того, что не та же команда. Код работает:

'mv' '*.pdf' 'test.pdf'

но когда вы набираете его, он запускается:

'mv' *.pdf 'test.pdf'

Разница в том, что оболочка обнуляет подстановочный знак * перед выполнением mv. Вы можете смоделировать, что он делает, используя модуль glob.

1 голос
/ 05 сентября 2011

Python не собирается расширять подстановочный знак оболочки в строке по умолчанию.Вы также можете сделать это без подпроцесса.Но ваш код потеряет все PDF-файлы, кроме последнего.

from glob import glob
import os
path = "/Users/armed/Desktop/"
os.chdir(path)
for filename in glob("*.pdf"):
    os.rename(filename, "test.pdf")

Но я уверен, что это не то, что вы действительно хотите.Вам понадобится лучшее имя назначения.

...