使用命令行参数读取文件

时间:2014-06-11 04:47:40

标签: python python-2.7 python-3.x numpy

如何将文件作为命令行参数传递

a=np.loadtxt("graph3.txt",dtype='float')

现在我想将上面的文件graph3.txt作为命令行参数传递为python x.py graph3.txt并执行上面的操作a = np.loadtxt(" graph3.txt",dtype ='浮动')在comman line参数

4 个答案:

答案 0 :(得分:2)

您可以使用像argparse或docopt这样的库,但对于简单的任务,请查看sys.argv:

import sys

if len(sys.argv) != 2:
    print("Please inform the filename")
    exit(1)

fname = sys.argv[1]
try:
    a = np.loadtxt(fname, dtype='float')
except IOError:
    print("File '%s' doesn't exist", fname)
    exit(1)

# Program continues

答案 1 :(得分:1)

您可以使用argv模块中的sys

from sys import argv print argv

您将获得list中的所有命令行参数,其中列表中的0位置将是脚本本身的名称

[~]$ python script.py arg1 arg2 arg3 arg4 ['script.py', 'arg1', 'arg2', 'arg3', 'arg4']

答案 2 :(得分:1)

如果您需要支持大量参数并为其提供帮助,我认为optparseargparse可以做得很好。

optparse有一个例子:

from optparse import OptionParser
parser = OptionParser(version="%prog 1.0.0")
parser.add_option("-f", "--file", action="store", dest="file",
                      default="graph3.txt", type="string",
                      help="specify a file to load")
options, args = parser.parse_args()
a=np.loadtxt(options.file,dtype="float")

然后,您可以使用以下脚本:./script.py -f gragh3.txt./script.py --file=gragh3.txt

您可以使用./script.py -h使脚本打印使用文档。

答案 3 :(得分:0)

Python命令行参数存储在sys modules'列表变量argv中。所以你要找的代码是:

import sys
a = np.loadtxt(sys.argv[1], dtype='float')

假设您将文件名作为第一个参数传递给脚本,如问题中所述。

此处的文档 - https://docs.python.org/2/library/sys.html#sys.argv