在 python 2.6 脚本中执行从终端获取参数的终端命令
Execute a terminal command that takes an argument from terminal in python a 2.6 script
我的环境使用 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]'))
当我研究时,上面的程序似乎应该可以工作,但没有。请帮忙
您混淆了终端命令和 Python 命令。如果您有一个名为 abc.py
的文件,其中包含以下代码:
import sys
print sys.argv[1]
而你 运行 它与 python abc.py arg1
,它应该打印出 arg1
。
如果您想控制一些事情,例如确保它们是 int
或允许多个或其他任何东西,为了更清晰、更易于阅读地使用命令行参数,我已经取得了很多成功Python 中的 argparse
模块 - 它比解析命令行参数的 sys.argv
风格更容易使用。在此处查看官方教程/文档:https://docs.python.org/2/howto/argparse.html
您应该将 commands.getoutput('cat sys.argv[1]')
更改为 commands.getoutput('cat %s' % (sys.argv[1],))
我的环境使用 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]'))
当我研究时,上面的程序似乎应该可以工作,但没有。请帮忙
您混淆了终端命令和 Python 命令。如果您有一个名为 abc.py
的文件,其中包含以下代码:
import sys
print sys.argv[1]
而你 运行 它与 python abc.py arg1
,它应该打印出 arg1
。
如果您想控制一些事情,例如确保它们是 int
或允许多个或其他任何东西,为了更清晰、更易于阅读地使用命令行参数,我已经取得了很多成功Python 中的 argparse
模块 - 它比解析命令行参数的 sys.argv
风格更容易使用。在此处查看官方教程/文档:https://docs.python.org/2/howto/argparse.html
您应该将 commands.getoutput('cat sys.argv[1]')
更改为 commands.getoutput('cat %s' % (sys.argv[1],))