【问题标题】:User defined input csv file用户定义的输入 csv 文件
【发布时间】:2011-03-04 14:54:54
【问题描述】:

我有几行代码以某种格式读取 csv 文件。我现在想要(并且无法找到解决方案)是文件名不再过时并在调用 python 程序时成为实际的用户输入。现在我在代码中有一个静态文件名,例如:

reader = csv.reader(open("file.csv", "rb"))

我希望这成为用户提供的信息。这是使用 raw_input 完成的,还是有办法让用户在以下行中写一些东西:

python testfile.py --input:file.csv

提前感谢您的帮助!

【问题讨论】:

    标签: python csv


    【解决方案1】:

    最简单的方法是这样编写脚本:

    import sys
    reader = csv.reader(open(sys.argv[1], "rb"))
    

    然后像这样运行它:

    python testfile.py file.csv
    

    你应该进行一些错误检查,例如:

    if len(sys.argv) < 2:
        print "Usage..."
        sys.exit(1)
    

    要获得更多功能,请使用 optparse / argparse 库中的 bult。

    【讨论】:

      【解决方案2】:

      作为参考,optparse (http://docs.python.org/library/optparse.html) 版本看起来像这样。

      import optparse
      
      parser = optparse.OptionParser()
      parser.add_option("-i","--input",dest="filename")
      (options,args) = parser.parse_args()
      
      thefile = options.filename
      reader = csv.reader(thefile,"rb")
      

      这会让你打电话

      python script.py -i foo.dat
      python script.py --input foo.dat
      

      【讨论】:

      • 用户定义输出 csv 的方式是什么?
      【解决方案3】:

      您可以使用optparse(2.7之后的argparse)或getopt来解析命令行参数。仅当您已经熟悉 C 中的参数解析时才使用 getopt。否则 argparse 是最容易使用的。

      【讨论】:

        【解决方案4】:

        也许 argparse python 模块适合你的依赖:

        http://docs.python.org/library/argparse.html

        旧的 optparse 已弃用。

        【讨论】:

          【解决方案5】:

          您可以访问sys.argv,它是一个输入数组。但请记住,第一个参数是实际程序本身。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2017-01-05
            • 1970-01-01
            • 2019-04-16
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多