用户自定义输入CSV文件

0 投票
5 回答
2522 浏览
提问于 2025-04-16 13:00

我有几行代码可以读取一个特定格式的csv文件。现在我想要的(但没找到解决办法)是,让文件名不再是固定的,而是变成用户在运行这个Python程序时输入的内容。现在代码里有一个静态的文件名,比如:

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

我希望这个文件名能变成用户提供的信息。这个是用raw_input来实现,还是有其他方法让用户输入类似这样的内容:

python testfile.py --input:file.csv

提前感谢你的帮助!

5 个回答

1

你可以使用 optparse(在2.7版本之后可以用 argparse)或者 getopt 来处理命令行参数。如果你已经熟悉C语言中的参数解析,那就可以用getopt。否则,argparse是最简单易用的选择。

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)

想要更强大的功能,可以使用内置的 optparseargparse 库。

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

撰写回答