【问题标题】:read a file using command line argument使用命令行参数读取文件
【发布时间】:2014-06-11 04:47:40
【问题描述】:

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

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

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

【问题讨论】:

  • 我认为 Google 可以为您提供更多答案和文章,而无需等待 * 上的答案。这是 Python 新手在任何书籍中都可以回答的基本问题。

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


【解决方案1】:

您可以使用 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

【讨论】:

    【解决方案2】:

    您可以使用来自sys 模块的argv

    from sys import argv print argv

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

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

    【讨论】:

      【解决方案3】:

      如果你需要支持很多论点并为它们提供帮助使用,我认为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 使脚本打印使用文档。

      【讨论】:

        【解决方案4】:

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

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

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

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

        【讨论】:

          最近更新 更多