我已经创建了一个打开文本文件并对字母进行计数的函数,它看起来像这样:
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来自哪里...我是以错误的方式打开文件,因为它指向文件打开的行?
答案 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")