Python:argparse 读取 csv 文件功能
Posted
技术标签:
【中文标题】Python:argparse 读取 csv 文件功能【英文标题】:Python: argparse reading csv file to function 【发布时间】:2013-06-26 13:39:38 【问题描述】:我正在使用 argparse,我想要类似:test.py --file hello.csv
def parser():
parser.add_argument("--file", type=FileType('r'))
options = parser.parse_args()
return options
def csvParser(filename):
with open(filename, 'rb') as f:
csv.reader(f)
....
....
return par_file
csvParser(options.filename)
我收到一个错误:TypeError coercing to Unicode: need string or buffer, file found.
我该如何解决这个问题?
【问题讨论】:
【参考方案1】:FileType()
argparse
类型返回一个已经打开的文件对象。
您无需再次打开它:
def csvParser(f):
with f:
csv.reader(f)
来自argparse
documentation:
为了方便使用各种类型的文件,
argparse
模块提供了工厂FileType
,它接受open()
函数的mode=
、bufsize=
、encoding=
和errors=
参数。例如,FileType('w') 可用于创建可写文件:>>> >>> parser = argparse.ArgumentParser() >>> parser.add_argument('bar', type=argparse.FileType('w')) >>> parser.parse_args(['out.txt']) Namespace(bar=<_io.TextIOWrapper name='out.txt' encoding='UTF-8'>)
并来自FileType()
objects 文档:
以
FileType
对象作为其类型的参数将打开命令行参数作为具有请求模式、缓冲区大小、编码和错误处理的文件(有关详细信息,请参阅open()
函数)
【讨论】:
那么,您认为我如何能够获取这个已经打开的文件对象并通过我创建的函数对其进行解析?我明白了,但我想要它,以便用户能够在命令提示符中输入文件名 @TTT:文件对象只是对象。将其传递给函数。 @TTT:您的用户可以输入文件名。argparse
然后为您打开该文件并为您提供生成的文件对象。
啊!谢谢你,这很有意义。谢谢你。我会用这个作为答案。以上是关于Python:argparse 读取 csv 文件功能的主要内容,如果未能解决你的问题,请参考以下文章