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

Python3 Argparse Trying to read a file and count the letters

我做了一个打开文本文件并计算字母的函数,它看起来像这样:

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"])

它 return 是一个错误:

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

有人可以解释一下发生了什么吗?它应该制作一个列表,然后 return 里面的字母数,所以我不确定字典来自哪里......我是否以错误的方式打开文件,因为它指向的行文件已打开?

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

例如,这样的事情会起作用:

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