从 Python 中的 CSV 文件读取和写入变量 (Selenium)



我的代码遇到了一些困难 - 想知道是否有人可以帮助我解决我哪里出错了。

我试图实现的目标的一般语法是:

  1. 获取用户输入
  2. 将输入拆分为单个变量
  3. 将变量(修正(写入"数据.csv">
  4. 从新修订的"数据.csv"中读取变量
  5. 将变量添加到列表
  6. 如果变量 1 <= 列表长度,则#run some code
  7. 如果变量 2 <= 列表长度,则#run some code

这是我的python代码:

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

我收到的错误消息是TypeError: count() takes exactly one argument (0 given)

因为以下行

integers = [[int(i)] for i in x.split()]

您正在创建列表列表。因此,您将列表传递给计数方法。试试这个:

integers = [int(i) for i in x.split()]


编辑:根据您的解释,您想要实现的目标,此代码应该这样做:
import csv
x = raw_input('Enter numbers separated by a space: ')
new_FONs = [[int(i)] for i in x.split()]
with open('data.csv', 'a', newline='') as f:
writer = csv.writer(f)
writer.writerows(new_FONs)
with open('data.csv', 'r') as f:
all_FONs_str = [line.split() for line in f]
all_FONs = [[int(FON[0])] for FON in all_FONs_str]
# For each of the user-input numbers
for FON in new_FONs:
# Count the occurance of this number in the CSV file
FON_count = all_FONs.count(FON)
if FON_count == 1:
print(f'{FON[0]} occurs once')
# do stuff
elif FON_count == 2:
print(f'{FON[0]} occurs twice')
# do stuff

我将读取的列表名称从 CSV 更改为all_FONs只是为了提醒它包含旧条目和新条目(因为我们在阅读前将它们写入文件(。

此外,您需要转换条目,因为从CSV读取时,您会得到字符串而不是整数,这将使比较变得困难。也许不需要整个转换为 int,只需处理字符串即可。但这取决于你需要什么。


编辑2:抱歉忘记将Python 2.7的input更改为raw_input:)

最新更新