Примеры скриптов на Python

05.03.2018

Теги: PythonWeb-разработкаМодуль

# Скачивает страницу и сохраняет ее в файл

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-разработка • Модуль

Каталог оборудования
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Производители
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Функциональные группы
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.