У меня проблема с преобразованием одного из сценариев моей компании из csh в Python. Сценарий csh вызывает команду с псевдонимами, но когда я вызываю ту же команду с псевдонимами через os.system (), она не работает.
Итак, если foo
является командой с псевдонимом:
CSH Script (работает, выполняет foo):
foo <argument>
Python (это не работает, ошибка утверждает, что foo - неизвестная команда):
os.system("foo <argument>")
Я полагаю, что при выполнении скрипта python должно произойти переключение контекста, из-за чего у Python нет доступа к псевдонимам, созданным в оболочке. После прочтения документации кажется, что os.system
устарела в пользу subprocess
, и что subprocess
имеет параметр shell
, который может мне помочь ... проблема в том, что я застрял использование Python 2.3, и subprocess
недоступен до версии 2.4.
У меня была идея скопировать псевдоним в python. Так, например, скажем, foo
был псевдоним cp
.
CSH:
alias foo cp
foo file1 file2
Python:
os.system("alias foo cp")
os.system("foo file1 file2")
Без игры в кости ... здесь тоже ошибки:
sh: line 0: alias: foo: not found
sh: line 0: alias: cp: not found
sh: foo: command not found
Мое последнее желание - взять несколько строк кода, использующих foo
, и поместить их в собственный скрипт CSH, который вызовет Python. Но если есть способ сделать эту работу, не прибегая к этому, я хотел бы знать об этом.
Заранее спасибо!