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

Python(Selenium)读写CSV变量报错求助:TypeError问题排查

解决Python代码中的TypeError与逻辑问题

嘿,我看了你的代码和遇到的报错,咱们一步步拆解问题,把你的需求流程跑通~

首先先明确你的目标流程:

  • 获取用户输入的数字
  • 拆分单个数字变量
  • 追加写入data.csv
  • 读取文件里的所有变量存入列表
  • 根据变量与列表长度的关系执行对应代码

先看你遇到的TypeError: count() takes exactly one argument (0 given)错误——这是因为你直接调用了Python内置的list类型的count()方法,而且还没传参数;另外代码里的integers[i]中的i也没定义,这就导致了双重错误。除此之外,代码里还有几个和csv读写、逻辑匹配相关的小问题,咱们一起修正:

你的原始代码

from selenium import webdriver
import time
import csv
x = raw_input("Enter numbers separated by a space")
integers = [[int(i)] for i in x.split()]
with open("data.csv", "a") as f:
    writer = csv.writer(f)
    writer.writerows(integers)
with open('data.csv', 'r') as f:
    file_contents = f.read()
    previous_FONs = file_contents.split(' ')
if list.count(integers[i]) == 1: #run some code
elif list.count(integers[i]) == 2: #run some code

问题拆解与修正方案

  1. raw_input的兼容性问题:如果用的是Python3,raw_input已经被移除,要换成input;如果是Python2,这部分没问题,但建议升级到Python3。
  2. CSV读写的错误:你用csv.writer写入的是每行一个整数,但读取时用f.read().split(' ')完全不对——csv文件里的内容是每行一个数,按空格拆分根本得不到正确的数字列表,得用csv.reader来解析。
  3. count()调用错误:你想统计的是某个数字在列表里的出现次数,但不能用内置list类型的方法,要调用你自己定义的列表变量的count(),同时要明确统计的是哪个数字。
  4. 目标逻辑未实现:你原本要判断「变量≤列表长度」,但代码里写的是count判断,得把这部分逻辑补全。

修正后的完整代码

from selenium import webdriver
import time
import csv

# 获取用户输入(Python3用input替代raw_input)
x = input("Enter numbers separated by a space: ")
# 拆分为一维整数列表,方便后续处理
integers = [int(i) for i in x.split()]

# 追加写入data.csv,加newline=''避免Windows下出现空行
with open("data.csv", "a", newline='') as f:
    writer = csv.writer(f)
    # 每个数字单独写一行,和你原本的写入逻辑一致
    for num in integers:
        writer.writerow([num])

# 正确读取data.csv中的所有数字,存入列表
previous_FONs = []
with open('data.csv', 'r') as f:
    reader = csv.reader(f)
    for row in reader:
        # 跳过可能的空行,把每行的内容转成整数存入列表
        if row:
            previous_FONs.append(int(row[0]))

# 实现你的核心逻辑:判断变量是否≤列表长度,执行对应代码
for num in integers:
    if num <= len(previous_FONs):
        # 这里替换成你要执行的代码
        print(f"变量{num} ≤ 列表长度{len(previous_FONs)},执行对应代码")
    else:
        print(f"变量{num} > 列表长度{len(previous_FONs)},不执行对应代码")

# 如果你原本的count逻辑是想统计数字出现次数,也可以这样实现
for num in integers:
    occurrence_count = previous_FONs.count(num)
    if occurrence_count == 1:
        # 替换成你要执行的代码
        print(f"数字{num}出现1次,执行对应代码")
    elif occurrence_count == 2:
        # 替换成你要执行的代码
        print(f"数字{num}出现2次,执行对应代码")
    else:
        print(f"数字{num}出现{occurrence_count}次,执行其他逻辑")

关键修改点说明

  • 把输入处理改成Python3兼容的input,同时简化了整数列表的生成。
  • 写入CSV时添加newline='',避免在Windows系统下写入后出现多余空行。
  • 用csv.reader读取文件,正确解析每行的数字,生成有效的整数列表previous_FONs。
  • 调用previous_FONs.count(num)来统计数字出现次数,而非错误调用内置list的方法。
  • 补全了你原本的核心逻辑:判断变量与列表长度的关系,执行对应代码。

内容的提问来源于stack exchange,提问作者booooooky

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 09:12:32