用户定义的输入csv文件

时间:2011-03-04 14:54:54

标签: python csv

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

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

我希望这成为用户提供的信息。这是使用raw_input完成的,还是通过让用户在以下行中写一些内容来实现:

python testfile.py --input:file.csv

提前感谢您的帮助!

5 个答案:

答案 0 :(得分:5)

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

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。

答案 1 :(得分: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

答案 2 :(得分:1)

您可以使用optparse(2.7之后的argparsegetopt来解析命令行参数。如果你已经熟悉C中的参数解析,那么只使用getopt。否则argparse是最容易使用的。

答案 3 :(得分:0)

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

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

旧的 optparse 已弃用。

答案 4 :(得分:0)

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