Python3 Argparse尝试读取文件并计算字母数

时间:2017-10-16 16:25:53

标签: python python-3.x function argparse

我已经创建了一个打开文本文件并对字母进行计数的函数,它看起来像这样:

def count_letters(fname):
    lettercounter = 0
    with open(fname, "r") as f:
        letters = []
        Scharacters = [",", ".", " "]
        for letter in f.read():
            if letter not in Scharacters:
                lettercounter += 1

        return lettercounter 

然而,当我尝试像这样运行它时:

if opts["known_args"]["commands"] == "letters":
        funk.count_letters(opts["known_args"])

它返回错误:

line 35, in count_letters
    with open(fname, "r") as f:
TypeError: expected str, bytes or os.PathLike object, not dict

有人可以解释一下发生了什么吗?它应该是一个列表,然后返回里面的字母数,所以我不知道dict来自哪里...我是以错误的方式打开文件,因为它指向文件打开的行?

1 个答案:

答案 0 :(得分:1)

您正在将字典对象(您的opts["known_args"]变量)传递给fname方法的count_letters()参数。然后该参数用于open(fname, "r"),它需要一个文件名字符串(或os.path)。

例如,像这样的东西可以工作:

if opts["known_args"]["commands"] == "letters":
    funk.count_letters("/path/to/file")