执行一个终端命令,该命令从python 2.6脚本中的终端获取参数

时间:2015-09-12 02:26:29

标签: python linux bash command-line-arguments

我的环境使用Python 2.6,我是Python的新手。我需要编写一个运行文件解码命令的脚本,该命令从命令行获取多个参数。我的问题是我无法将从终端获取的参数解析为文件解码命令。

例如,如果我的程序名是x.py,当我运行" x.py Desktop / abc.txt"如何将Desktop / abc.txt作为参数传递给cat命令?

import commands
import sys

a=open("b.txt","w") 
a.write(commands.getoutput('cat sys.argv[1]'))

当我研究时,似乎上述程序应该有效,但它没有。请帮忙。

2 个答案:

答案 0 :(得分:1)

您正在混淆终端命令和Python命令。如果您有一个名为abc.py的文件,其代码如下:

import sys
print sys.argv[1]

您使用python abc.py arg1运行它,它应打印出arg1

如果您希望控制诸如确保它们是int或允许多个或其他的东西,那么使用命令行参数的更简洁易懂的方法,我使用{已经取得了很大的成功Python中的{1}}模块 - 它比解析命令行参数的argparse样式更容易使用。查看官方教程/文档:https://docs.python.org/2/howto/argparse.html

答案 1 :(得分:1)

您应该将commands.getoutput('cat sys.argv[1]')更改为commands.getoutput('cat %s' % (sys.argv[1],))