Привет, позволь провести code review.
В таком случае, при импорте из другого скрипта, код не будет выполнен автоматически. A module's __name__
1)
, лучше выбирать более осмысленные названия для переменных, так как если тело цикла получится достаточно большим и сложным, то далее по коду будет тяжело вспомнить, что это за X? Лучше писать так:
2) Проверку на пустую строку лучше делать так:
3) Для генерации имен файлов, имеет смысл просто считать md5 hash от URL'a
4)
- сначала создается файл, а потом начинается закачка. Если requests бросит исключение, то ты у тебя будет создан пустой файл.
5) Для открытия файла, лучше использовать менеджер контекста with, тогда не придется заботить о закрытии файла.
Вместо копирования и удаления файлов, можно просто их переименовывать с помощью os.rename()
- В Python, если ты пишешь исполняемый скрипт, то принято использовать конструкцию
Python:
def main():
pass
if __name__ == "__main__":
main()
В таком случае, при импорте из другого скрипта, код не будет выполнен автоматически. A module's __name__
- Для управления поведением программы, можно использовать модуль argparse. Например, чтобы передавать путь к файлу с URL'ами или интересующему расширению файлов. В данном случае, использование input не оправдано.
- Поднимать в память все содержимое файла, плохая идея. Если размер файла будет несколько гигабайт или террабайт, то тебе не хватит RAM. Лучше всего читать файл построчно и отдавать за одну итерацию, только одну строку. Для этой задачи отлично подойдет использование генераторов.
Python:
def read_file(file_path):
with open(file_path, "r") as f:
for line in f:
yield line.strip()
for line in read_file("111.txt"):
print(line)
- Далее
Python:
for x in site:
if x == '':
continue
ran = random.randint(1,999999)
handle = open(str(ran) + '.unknow',"wb")
ufr = requests.get(x)
handle.write(ufr.content)
handle.close()
1)
Python:
for x in site
Python:
for site in sites
Python:
if not x:
continue
Python:
import hashlib
file_name = hashlib.md5(x.encode('utf-8')).hexdigest()
Python:
handle = open(str(ran) + '.unknow',"wb")
5) Для открытия файла, лучше использовать менеджер контекста with, тогда не придется заботить о закрытии файла.
Python:
formats = input("На какой формат изменить скачанные файлы? => ")
for file in glob.glob("*.unknow"):
files.append(file)
for x in files:
ran = random.randint(1,999999)
shutil.copy(x, str(ran) + '.' + formats)
for x in files:
os.remove(x)
Вместо копирования и удаления файлов, можно просто их переименовывать с помощью os.rename()
Комментарии
2