Python读取本地文件统计词数遇TypeError错误求助
问题分析与修正
错误原因
你传入open()的sys.stdin是一个文本流对象,但open()函数要求的参数是文件路径的字符串/字节/路径对象,这就触发了TypeError。
修正后的代码
方式1:通过命令行传入文件路径(推荐)
这种方式更灵活,适合批量处理文件:
import sys # 从命令行参数获取目标文件路径 file_path = sys.argv[1] with open(file_path, 'r', encoding='utf-8') as f: # 读取文件全部内容,按空白字符分割为单词列表 all_words = f.read().split() # 直接用列表长度得到总词数 print(f"总词数:{len(all_words)}")
使用方式:在命令行执行 python 你的脚本名.py 目标文件路径.txt
方式2:直接在代码中指定文件路径
如果固定处理某个文件,可以直接写死路径:
file_path = "本地文件的绝对/相对路径.txt" with open(file_path, 'r', encoding='utf-8') as f: all_words = f.read().split() print(f"总词数:{len(all_words)}")
原代码的其他问题说明
readlines()返回的是按行拆分的列表,不能直接调用split(),应该用read()读取完整文本后再分割。- 统计词数不需要循环累加,
len(words)直接就能得到总数量,效率更高。
额外:从标准输入读取内容(如管道传值)
如果你的需求是从标准输入读取内容(比如通过管道传递文件内容),不需要调用open(),直接用sys.stdin即可:
import sys content = sys.stdin.read() all_words = content.split() print(f"总词数:{len(all_words)}")
使用方式:在命令行执行 cat 目标文件.txt | python 你的脚本名.py
内容的提问来源于stack exchange,提问作者Vyshakh
相关产品推荐
相关产品推荐

