Программа предназначена для загрузки текстового файла с одним прокси в каждой строке. Затем он просит пользователя ввести разделение, в котором ему нужны прокси. Например, если бы у меня было 100 прокси в текстовом файле на 100 отдельных строк, и я сказал, что мне нужно пять 10 пакетов прокси и два 25 пакета прокси, программа выдаст в общей сложности семь текстовых файлов, которые в сумме составят всего из 100 прокси.
filename = input('Enter a file name: ')
with open(filename) as f: ###load text file
line_count = 0
for line in f:
line_count += 1
print("Number of proxies: " + str(line_count)) ###count proxies
pack10 = int(input("10 packs? ")) ###designate packs
pack25 = int(input("25 packs? "))
pack50 = int(input("50 packs? "))
pack100 = int(input("100 packs? "))
total = pack10*10 + pack25*25 + pack50*50 + pack100*100 ###calculate total proxies needed
packs = ([pack10]*10) + ([pack25]*25) + ([pack50]*50) + ([pack100]*100)
def split_list(filename, sizes): ###chunking of list
with open(filename) as f:
content = f.readlines()
new_content = []
start = 0
for size in sizes:
stop = start + size
new_content.append(content[start:stop])
start += size
return new_content
splitted_list = split_list(filename, [packs])
if line_count < total:
print("You need " + str((total - line_count)) + " more proxies") ###ensure right amount of proxies
else:
for i, l in enumerate(splitted_list): ###chunk proxies
with open('{}.txt'.format(i), 'w') as f:
f.writelines(l) #output text files
print("Complete")
Это ошибка:
Traceback (most recent call last):
File "c:\Users\Username\Desktop\New Folder\proxies\splitter.py", line 28, in <module>
splitted_list = split_list(filename, [packs])
File "c:\Users\Username\Desktop\New Folder\proxies\splitter.py", line 22, in split_list
stop = start + size
TypeError: unsupported operand type(s) for +: 'int' and 'list'
Не уверен, что делать, программа прекрасно работает, когда я заменяю [packs]
в splitted_list = split_list(filename, [packs])
на [5, 3, 2]
, например.