我的文本文件有6行,但每次验证运行两次总是得到:
File "verifier.py", line 34, in <module>
verify(i)
File "verifier.py", line 27, in verify
real_account = account[acc_no]
IndexError: list index out of range
当我用2替换acc_no时它工作正常,但是当打印出acc_no时我得到2所以我不知道为什么它会打印这个错误我的代码:
import random
import time
import json
import threading
import requests
from selenium import webdriver
from selenium.webdriver.support.ui import Select
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from colorama import init
from colorama import Fore, Back, Style
from datetime import datetime
init(autoreset=True)
config = json.load(open("config.json"))
times = int(config['amount'])
delay = int(config['verifier_delay'])
username = config['username']
password = config['password']
read_file = open("accounts.txt", "r")
acc_no=0
def verify(acc_no):
account = read_file.readlines()
real_account = account[acc_no]
username = real_account[0:real_account.find(":")]
password = real_account[real_account.find(":")+1:]
print(username + password)
print(acc_no)
for i in range (times):
verify(i)
time.sleep(5)
先谢谢您提供的任何帮助
答案 0 :(得分:0)
您已达到account
没有acc_no
的有效索引的程度。尝试捕获错误并查看这些值实际是什么:
try:
real_account = account[acc_no]
except IndexError:
print(acc_no, account)
我认为您会发现帐户不是您认为的那样!
答案 1 :(得分:0)
readlines()
函数读取从当前位置到文件末尾的所有行。当您再次拨打verify()
时,您已经在文件的末尾,因此没有什么可读的。
您需要先找回文件的开头。
def verify(acc_no):
read_file.seek(0)
account = read_file.readlines()
...
但是不是重复读取文件,而是只读一次并将其保存在全局变量中。然后,您每次都可以重复使用该变量。
with open("accounts.txt", "r") as read_file:
account = read_file.readlines()
答案 2 :(得分:0)
您似乎打开read_file一次,然后每次进入verify()函数时尝试使用read_file.readlines()读取其整个内容。
AFAIK,readlines读取整个文件,因此如果不重新打开文件,它将无法再次运行。我错过了什么吗? The docs说:
如果要阅读列表中文件的所有行,也可以使用 list(f)或f.readlines()
答案 3 :(得分:0)
当您尝试获取位置本身不存在的位置值时,列表将引发<table width=100% height=100%><tr>
<td class="events_column" width=50%>
<div id="calendar_events">
<h1>Eventos</h1>
Haz click en el evento cuya ubicación quieras ver en el mapa.
<div class="events_table_div">
<table class="fancy_table scrollable_table">
<thead>
<tr>
<th>Evento</th>
<th>Fecha</th>
<th>Ubicación</th>
</tr>
</thead>
<tbody>
{% for each in events %}
<tr class="clickable" onclick="{% if 'location' in each %}deleteMarkers(); addMarker('{{each['id']}}');{% endif %}">
<td>{% if 'summary' in each %}{{each['summary']}}{% else %}---{% endif %}</td>
<td>{% if 'start' in each %}{{each['start']['date']}}{% else %}---{% endif %}</td>
<td>{% if 'location' in each %}{{each['location']}}{% else %}---{% endif %}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
<div class="buttons_table_div">
<table class="fancy_table">
<tr class="clickable" onclick="addAllMarker()"><td colspan="3">Mostrar todos los eventos</td></tr>
<tr class="clickable" onclick="deleteMarkers()"><td colspan="3">Ocultar todos los eventos</td></tr>
</table>
</div>
</div>
</td>
<td class="map_column" width=50%>
<br>
<div id="map" class="map"></div>
</td>
</tr></table>
。所以问题就是
IndexError
在acc_no
account
将返回read_file.readlines()
一个空列表,则会引发异常。 现在解决方案就是我的。
[]
干杯!