You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 17:12:26