Примеры скриптов на Python
05.03.2018
Теги: Python • Web-разработка • Модуль
# Скачивает страницу и сохраняет ее в файл import requests result = requests.get('http://www.tinko.msk.ru/') try: result.raise_for_status() except Exception as e: print('Ошибка при загрузке страницы: ' + str(e)) file = open('C:\\example\\tinko.txt', mode = 'w', encoding = 'utf-8') file.write(result.text) file.close()
# Открывает карту в браузере, извлекая адрес # из командной строки или буфера обмена import webbrowser, sys, pyperclip from urllib import parse if len(sys.argv) > 1: address = ' '.join(sys.argv[1:]) else: address = pyperclip.paste() address = parse.urlencode({'text': address}) webbrowser.open('https://yandex.ru/maps/?' + address)
# Ищет в буфере обмена номера телефонов и адреса эл.почты # импортируем модули pyperclip (работа с буфером обмена) # и re (работа с регулярными выражениями) import pyperclip, re # регулярное выражение для номера телефона phoneRegex = re.compile('''( (?:\(?(\d{3})\)?)? # код города (?:\s|-)? # разделитель (\d{3}) # первые три цифры (?:\s|-)? # разделитель (\d{2}) # еще две цифры (?:\s|-)? # разделитель (\d{2}) # еще две цифры (?:\s*доб[.а-я]*\s*(\d{2,5}))? # добавочный )''', re.VERBOSE) # регулярное выражение для адреса эл.почты emailRegex = re.compile(''' [a-z0-9._-]+ # имя пользователя @ # @ [a-z0-9.-]+ # первая часть домена \.[a-z]{2,6} # вторая часть домена ''', re.VERBOSE | re.IGNORECASE) # получить содержимое буфера обмена text = str(pyperclip.paste()) # список для хранения найденных номеров # телефонов и адресов эл.почты matches = [] # цикл по найденным номерам телефонов for groups in phoneRegex.findall(text): phoneNum = '+7 (' + groups[1] + ') ' + groups[2] + '-' + groups[3] + '-' + groups[4] if groups[5] != '': phoneNum += ' доб.' + groups[5] # пропускаем дубли if phoneNum not in matches: matches.append(phoneNum) # цикл по найденным адресам эл.почты for groups in emailRegex.findall(text): if groups not in matches: # пропускаем дубли matches.append(groups) # копируем результат в буфер обмена if len(matches) > 0: pyperclip.copy('\n'.join(matches)) print('Скопировано в буфер обмена:') print('\n'.join(matches)) else: print('Телефонные номера и адреса почты не найдены.')
# Копирует директорию со всем ее содержимым в # zip-файл с инкрементным номером в имени файла import zipfile, os def backupToZip(source, backup): """Создание резервной копии всего содержимого директории source""" # Проверить, что обе директории существуют if not (os.path.isabs(source) and os.path.isdir(source)): print('Директория %s не существует' % (source)) return if not (os.path.isabs(backup) and os.path.isdir(backup)): print('Директория %s не существует' % (backup)) return # Определить, какое имя файла будет у zip-архива, # исходя из имен уже существующих файлов number = 1 while True: name = os.path.basename(source) + '-' + str(number) + '.zip' backupFile = os.path.join(backup, name) if not os.path.isfile(backupFile): break number = number + 1 # Создание нового zip-файла print('Создание нового zip-файла %s...' % (backupFile)) zipFile = zipfile.ZipFile(backupFile, 'w') # Обход всего дерева директории и сжатие файлов в каждой папке archDirName = '' for dir, subdirs, files in os.walk(source): print('Добавление файлов из директории %s...' % (dir)) # Имя текущей директории в архиве archDirName = '/'.join([archDirName, os.path.basename(dir)]).strip('/') # Добавить в архив текущую директорию zipFile.write(dir, archDirName) # Добавить в архив все файлы из текущей директории for file in files: # Имя текущего файла в архиве archFileName = archDirName + '/' + file zipFile.write(os.path.join(dir, file), archFileName) # Закрываем zip-файл zipFile.close() print('Готово') # end function backupToZip() backupToZip('C:\\project', 'C:\\backup')
Поиск: Python • Web-разработка • Модуль