Я не могу заставить команду 'mv' работать с Python subprocess.Popen
с подстановочным знаком.
код:
def moveFilesByType(source, destination, extension):
params = []
params.append("mv")
params.append(source + "/*." + extension)
params.append(destination + "/")
print params
pipe = subprocess.Popen(params, shell=True, stdout=PIPE)
result, err = pipe.communicate()
return result
Выход из print params
:
['mv', '/full_path_to_folder_source/*.nib', '/full_path_to_folder_target/']
Пути здесь сокращены только для удобства чтения, но я заверяю, что они действительны. Вызов этой же команды из терминала работает, но вызов в python дает стандартное сообщение о неправильном использовании mv
:
usage: mv [-f | -i | -n] [-v] source target
mv [-f | -i | -n] [-v] source ... directory
Я прочитал, что для работы подстановочных знаков мне понадобится параметр shell=True
в вызове Popen
, который присутствует. Есть идеи, почему это не работает? Удаление shell=True
приводит к тому, что звездочки считаются жесткими литералами, как и ожидалось.