【发布时间】:2011-03-16 13:16:16
【问题描述】:
我在将我公司的一个脚本从 csh 转换为 Python 时遇到问题。 csh 脚本调用了一个别名命令,但是当我通过 os.system() 调用相同的别名命令时,它不起作用。
所以,如果foo 是别名命令:
CSH 脚本(有效,执行 foo):
foo <argument>
Python(这不起作用,错误声称 foo 是未知命令):
os.system("foo <argument>")
我认为当我执行 python 脚本时一定会发生某种上下文切换,这会导致 Python 无法访问在 shell 中创建的别名。阅读文档后,似乎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 的几行代码放入 Python 将调用的自己的 CSH 脚本中。但是,如果有一种方法可以在不求助于它的情况下完成这项工作,我很想知道。
提前致谢!
【问题讨论】:
标签: python subprocess alias csh os.system