有一个简单的 python 脚本可以从文件中读取用户(1 行 - 1 个用户)并对其进行处理。因此,我需要获取必须处理的用户列表。下面的例子中,代码被简化了,在原代码中,在处理过程中,可以指定需要处理的用户数,即程序不走数据库到最后,然后卸载仍有待处理的用户。根据我的想法,每个处理过的用户都从数组中删除,在处理之前,将接收到的用户分配给数组的值。这是代码本身:
len_base = 0
added_users = 0
cur_users_list = []
result_user_list = []
path = 'base_users.txt'
try:
f = open(path, 'r', encoding='utf-8')
users = f.read()
cur_users_list = users.split('\n')
len_base = len(cur_users_list)
print()
print(f'Найдено пользователей: {len_base}.')
except Exception as e:
print(f'Ошибка чтения файла: {e}.')
cur_position = 1
result_user_list = cur_users_list
for user in cur_users_list:
added_users += 1
print()
print(f'Пользователь {user} успешно обработан.')
print(f'Обработанные пользователи: {added_users}/{len_base}.')
cur_user = user
if cur_user in result_user_list:
result_user_list.remove(cur_user)
cur_position += 1
print()
print(f'Обработано пользователей: {added_users}')
但是这段代码只通过了一半的用户,即每秒只处理一次。这是关于从数组中删除的这些行:
cur_user = user
if cur_user in result_user_list:
result_user_list.remove(cur_user)
由于某种原因,它user
也从数组cur_users_list
中删除了,虽然我从之前创建的数组中删除了它result_user_list
,我什至做了一个变量cur_user
不使用它user
,但结果还是一样,我不明白问题是什么。我也有一个想法,将处理后的用户添加到数组result_user_list
中,然后将其与原始用户进行比较cur_users_list
并只留下原始用户,但我想弄清楚为什么当前代码会产生这样的结果。这是文件base_users.txt
:
Тит
Виктор
Альберт
Игорь
Цицерон
Сергей
Елисей
Жигер
Давид
Люций
Донат
Максим
Эрик
Любомир
Ленар
Жерар
Юрий
Феликс
Михаил
Чеслав
Юрий
Лаврентий
Чарльз
Харитон
Юлий
Тарас
Шерлок
Фёдор
Евгений
Яромир
你有一个典型的错误,这里已经在问题中多次讨论过。您不是在复制列表本身,而是在复制它的链接。因此,您在一个列表中所做的所有更改都会立即反映在另一个列表中 - 因为这是一个您有两个链接的列表。
要准确复制列表的内容,而不仅仅是链接,您可以这样做: