мне периодически нужны библиотеки для WINDOWS.
я нашел неплохую подборку в сети .
пятница, 19 августа 2011 г.
python. генерация случайнго числа или буквы из заданного диапазона
Возник такой вопрос: Как случайным образом показывать числа из диапазона в python?
генератор случайных чисел из диапазона
import random
print random.randint(1, 10) # выводим случайное число из диапазона от 1 до 10
print random.choice("acdf'') # выводит случайную букву из букв acdf
генератор случайных чисел из диапазона
import random
print random.randint(1, 10) # выводим случайное число из диапазона от 1 до 10
print random.choice("acdf'') # выводит случайную букву из букв acdf
Пишем скрипт на Python для переименования файлов
Пишем скрипт на Python для переименования файлов
На днях мне надо было переименовать все фотографии, лежащие у меня в папке, на 1.jpg, 2.jpg и так далее. Занимаясь этим вручную можно потратить много времени. Для таких целей можно использовать готовые скрипты, но лучше и полезнее сделать самому, чем мы и займемся Писать разумеется будем на Python, поэтому для работы с файлами и каталогами нам надо будет подключить модуль "OS".
Вот сам код:
На днях мне надо было переименовать все фотографии, лежащие у меня в папке, на 1.jpg, 2.jpg и так далее. Занимаясь этим вручную можно потратить много времени. Для таких целей можно использовать готовые скрипты, но лучше и полезнее сделать самому, чем мы и займемся Писать разумеется будем на Python, поэтому для работы с файлами и каталогами нам надо будет подключить модуль "OS".
Вот сам код:
#!/usr/bin/python
import os
path = raw_input("Enter path to folder: ")
listOfFiles = os.listdir(path)
countOfFiles = len(listOfFiles)
os.chdir(path)
for i in range(0, countOfFiles):
os.rename(path+listOfFiles[i], str(i+1)+'.jpg')
материал взят с сайта: http://www.dpath.ru/articles/writing-a-python-script-for-renaming-files.html
Получить список всех папок и файлов v2. Python
3 апреля я писал о том как Получить список файлов в каталоге
сегодня я хочу разместить еще один вариант того как это можно сделать .
Как получить список всех папок и файлов в определенной директории? Очень просто – используя функцию os.walk()
решение взято с сайта: http://ninjaside.info/2010/12/poluchit-spisok-vsex-papok-i-fajlov-python/
сегодня я хочу разместить еще один вариант того как это можно сделать .
Как получить список всех папок и файлов в определенной директории? Очень просто – используя функцию os.walk()
import os
def getsubs(dir):
# get all
dirs = []
files = []
for dirname, dirnames, filenames in os.walk(dir):
dirs.append(dirname)
for subdirname in dirnames:
dirs.append(os.path.join(dirname, subdirname))
for filename in filenames:
files.append(os.path.join(dirname, filename))
return dirs, files
решение взято с сайта: http://ninjaside.info/2010/12/poluchit-spisok-vsex-papok-i-fajlov-python/
понедельник, 4 апреля 2011 г.
Python: Словарь
Dict = {} # пустой словарь
Dict = {'row': 4, 'col': 10, 'page': 'My page'} # словарь с элементами
print Dict['row'] # доступ к элементу словаря
# Проверка существования ключа
Dict.has_key('row') # False если ключ не существует
'row' in Dict #альтернативный способ проверки
Dict.keys() # вернуть все ключи имеющиеся в словаре в виде списка
Dict.values() # вернуть список значений в виде списка
Dict.items() # возвращает список в котором элементы - кортеж пар (ключ, значение) из словаря
Dict.copy() # копирование
Dict.get('ключ', 'значение по умолчанию') # если элемент с таким ключом отсутствует, будет возвращено значение по умолчанию
Dict.update(Dict2) # слияние
Dict.pop('ключ') # удалить элемент с ключом
len(Dict) # длинна словаря(количество элементов)
Dict = {'row': 4, 'col': 10, 'page': 'My page'} # словарь с элементами
print Dict['row'] # доступ к элементу словаря
# Проверка существования ключа
Dict.has_key('row') # False если ключ не существует
'row' in Dict #альтернативный способ проверки
Dict.keys() # вернуть все ключи имеющиеся в словаре в виде списка
Dict.values() # вернуть список значений в виде списка
Dict.items() # возвращает список в котором элементы - кортеж пар (ключ, значение) из словаря
Dict.copy() # копирование
Dict.get('ключ', 'значение по умолчанию') # если элемент с таким ключом отсутствует, будет возвращено значение по умолчанию
Dict.update(Dict2) # слияние
Dict.pop('ключ') # удалить элемент с ключом
len(Dict) # длинна словаря(количество элементов)
воскресенье, 3 апреля 2011 г.
Python: Получить список файлов в каталоге
Сразу прошу прощение за форматирования кода...
@TODO : прикрутить модуль !
Допустим у нас на сервере есть каталог с файлами:
/var/www/mysite/files
photoes.zip
1.jpg
2.jpg
3.jpg
im.gif
document.pdf
Чтобы получить содержимое этого каталога в виде списка, можно воспользоваться встроенным модулем os:
#Подключаем модуль
import os
#Каталог из которого будем брать файлы
directory = '/var/www/mysite/files'
#Получаем список файлов в переменную files
files = os.listdir(directory)
В результате files будет равна:
['photoes.zip', '1.jpg', '2.jpg', '3.jpg', 'im.gif', 'document.pdf']
Если нужно получить файлы только определенного типа, их можно отфильтровать по расширению:
#Подключаем модуль
import os
#Каталог из которого будем брать изображения
directory = '/var/www/mysite/files'
#Получаем список файлов в переменную files
files = os.listdir(directory)
#Фильтруем список
images = filter(lambda x: x.endswith('.jpg'), files)
Теперь в переменной images такой список:
['1.jpg', '2.jpg', '3.jpg']
решение взято с сайта: http://tutorialbox.freelancing.lv/tutorials/6
Получить список файлов в каталоге v2
Немного магии от модуля os
os.walk() - возвращает объект-генератор. Из полученного объекта можно получить кортежи
для каждого каталога в переданной walk файловой иерархии. Каждый кортеж состоит из трех
элементов:
1. Абсолютный адрес очередного каталога (строка).
2. Имена (без адреса) подкаталогов первого уровня для текущего каталога (список).
3. Имена (без адреса) файлов данного каталога.
Посмотрим, как это работает. Допустим, у нас есть такое дерево каталогов:
tree = os.walk('/home/pl/mydir')
На что же ссылается tree? Попробуем просто получить данные, связанные с данной переменной.
print(tree)
В результате видим
< generator object walk at 0x00A8B620 >
Итак, есть объект-генератор. Поскольку полученный объект генерирует кортежи, количество
которых равно количеству каталогов в дереве, то можно их получить с помощью цикла for и,
например, вывести на экран
for d in tree:
print (d)
В соответствии с вышеуказанным деревом каталогов получится следующее:
('/home/pl/mydir', ['dir2a', 'dir2b'], ['mash187.pas', 'mash189.pas', 'menu_.php', 'xorg.conf', 'клав_тренажер.odt', 'Расписание 2004.xls'])
('/home/pl/mydir\\dir2a', ['dir3'], ['less1.doc', 'Patro_Nia.ogg', 'Расписание 2004.doc'])
('/home/pl/mydir\\dir2a\\dir3', [], ['bottom_.php', 'equador.mid', 'less1.html', 'net_Alt.txt', 'poly995.mid', 'top_.php'])
('/home/pl/mydir\\dir2b', [], ['clear.gif', 'fon1.jpg', 'logo4.png', 'okulov245.pas', 'okulov273.pas', 'plan1.jpg', 'plan2.jpg'])
Итак, налицо четыре кортежа (у нас четыре каталога – см. схему выше). Каждый кортеж
включает три элемента. Первый – это адрес каталога, второй – список поддиректорий не глубже
первого уровня, третий – список имен файлов. Если вложенных каталогов или файлов нет, то
соответствующий им список будет пуст.
Если мы еще раз запустим цикл с переменной tree, то уже ничего не получим. Дело в том,
что объект-генератор, с которым переменная была связана, уже был использован, он выдал
свое содержимое и больше его не содержит. Поэтому, если требуется сохранить кортежи для
последующий обработки, то лучше сохранить их, например, в списке:
>>> import os
>>> pdir = 'G:/projects/pythoner.info/pypath/mydir'
>>> contdir = []
>>> for i in os.walk(pdir):
contdir.append(i)
>>> for i in contdir:
print (i)
('G:/projects/pythoner.info/pypath/mydir', ['dir2a', 'dir2b'], ['mash187.pas', 'mash189.pas', 'menu_.php', 'sg30.thm', 'xorg.conf', 'клав_тренажер.odt', 'Расписание 2004.xls'])
('G:/projects/pythoner.info/pypath/mydir\\dir2a', ['dir3'], ['less1.doc', 'Patro_Nia.ogg', 'Thumbs.db', 'Расписание 2004.doc'])
('G:/projects/pythoner.info/pypath/mydir\\dir2a\\dir3', [], ['equador.mid', 'fon1.jpg', 'logo4.png', 'logos.bmp', 'net_Alt.txt', 'plan1.jpg', 'poly995.mid', 'Thumbs.db', 'top_.php'])
('G:/projects/pythoner.info/pypath/mydir\\dir2b', [], ['bottom_.php', 'clear.gif', 'less1.html', 'okulov245.pas', 'okulov273.pas', 'plan2.jpg', 'sg30.sdv'])
С помощью функции walk() можно получить имена файлов с тем, чтобы в дальнейшем с ними
что-нибудь делать с помощью других методов Python и его модулей. Получить их можно,
извлекая из третьего элемента каждого кортежа. Сделать это можно так, как показано ниже:
for d, dirs, files in os.walk('c:/mydir'):
for f in files:
print (f)
Переменная d в каждой итерации связывается с первым элементом каждого кортежа (строкой,
содержащей адрес каталога), dirs – со вторым элементом (списком подкаталогов), а files -
со списками файлов очередного каталога. Чтобы извлечь списки файлов целиком, а не
выделять каждый файл по отдельности, можно сделать так:
for d, dirs, files in os.walk('c:/mydir'):
print (files)
И получить:
['mash187.pas', 'mash189.pas', 'menu_.php', 'xorg.conf', 'клав_тренажер.odt', 'Расписание 2004.xls']
['less1.doc', 'Patro_Nia.ogg', 'Расписание 2004.doc']
['bottom_.php', 'equador.mid', 'less1.html', 'net_Alt.txt', 'poly995.mid', 'top_.php']
['clear.gif', 'fon1.jpg', 'logo4.png', 'okulov245.pas', 'okulov273.pas', 'plan1.jpg', 'plan2.jpg']
Имена файлов не полные. Они не содержат адреса, следовательно, для операций с файлами
таких списков не достаточно. Для получения полных адресов подойдет функция
os.path.join(). С ее помощью можно объединить первый элемент кортежа, содержащий полный
путь, с именем каждого файла:
>>> path_f = []
>>> for d, dirs, files in os.walk('c:/mydir'):
for f in files:
path = os.path.join(d,f) # формирование адреса
path_f.append(path) # добавление адреса в список
>>> path_f
['c:/mydir\\mash187.pas', 'c:/mydir\\mash189.pas', 'c:/mydir\\menu_.php', 'c:/mydir\\xorg.conf', 'c:/mydir\\клав_тренажер.odt', 'c:/mydir\\Расписание 2004.xls', 'c:/mydir\\dir2a\\less1.doc', 'c:/mydir\\dir2a\\Patro_Nia.ogg', 'c:/mydir\\dir2a\\Расписание 2004.doc', 'c:/mydir\\dir2a\\dir3\\bottom_.php', 'c:/mydir\\dir2a\\dir3\\equador.mid', 'c:/mydir\\dir2a\\dir3\\less1.html', 'c:/mydir\\dir2a\\dir3\\net_Alt.txt', 'c:/mydir\\dir2a\\dir3\\poly995.mid', 'c:/mydir\\dir2a\\dir3\\top_.php', 'c:/mydir\\dir2b\\clear.gif', 'c:/mydir\\dir2b\\fon1.jpg', 'c:/mydir\\dir2b\\logo4.png', 'c:/mydir\\dir2b\\okulov245.pas', 'c:/mydir\\dir2b\\okulov273.pas', 'c:/mydir\\dir2b\\plan1.jpg', 'c:/mydir\\dir2b\\plan2.jpg']
Пример имеет, скорее всего, демонстрирующее, а не практическое значение, т.к.
результирующий список содержит повторяющиеся части строк. Поэтому лучше напрямую работать с
кортежем, извлеченным из объекта-генератора.
/var/www/mysite/files
photoes.zip
1.jpg
2.jpg
3.jpg
im.gif
document.pdf
Чтобы получить содержимое этого каталога в виде списка, можно воспользоваться встроенным модулем os:
#Подключаем модуль
import os
#Каталог из которого будем брать файлы
directory = '/var/www/mysite/files'
#Получаем список файлов в переменную files
files = os.listdir(directory)
В результате files будет равна:
['photoes.zip', '1.jpg', '2.jpg', '3.jpg', 'im.gif', 'document.pdf']
Если нужно получить файлы только определенного типа, их можно отфильтровать по расширению:
#Подключаем модуль
import os
#Каталог из которого будем брать изображения
directory = '/var/www/mysite/files'
#Получаем список файлов в переменную files
files = os.listdir(directory)
#Фильтруем список
images = filter(lambda x: x.endswith('.jpg'), files)
Теперь в переменной images такой список:
['1.jpg', '2.jpg', '3.jpg']
решение взято с сайта: http://tutorialbox.freelancing.lv/tutorials/6
Получить список файлов в каталоге v2
Немного магии от модуля os
os.walk() - возвращает объект-генератор. Из полученного объекта можно получить кортежи
для каждого каталога в переданной walk файловой иерархии. Каждый кортеж состоит из трех
элементов:
1. Абсолютный адрес очередного каталога (строка).
2. Имена (без адреса) подкаталогов первого уровня для текущего каталога (список).
3. Имена (без адреса) файлов данного каталога.
Посмотрим, как это работает. Допустим, у нас есть такое дерево каталогов:
tree = os.walk('/home/pl/mydir')
На что же ссылается tree? Попробуем просто получить данные, связанные с данной переменной.
print(tree)
В результате видим
< generator object walk at 0x00A8B620 >
Итак, есть объект-генератор. Поскольку полученный объект генерирует кортежи, количество
которых равно количеству каталогов в дереве, то можно их получить с помощью цикла for и,
например, вывести на экран
for d in tree:
print (d)
В соответствии с вышеуказанным деревом каталогов получится следующее:
('/home/pl/mydir', ['dir2a', 'dir2b'], ['mash187.pas', 'mash189.pas', 'menu_.php', 'xorg.conf', 'клав_тренажер.odt', 'Расписание 2004.xls'])
('/home/pl/mydir\\dir2a', ['dir3'], ['less1.doc', 'Patro_Nia.ogg', 'Расписание 2004.doc'])
('/home/pl/mydir\\dir2a\\dir3', [], ['bottom_.php', 'equador.mid', 'less1.html', 'net_Alt.txt', 'poly995.mid', 'top_.php'])
('/home/pl/mydir\\dir2b', [], ['clear.gif', 'fon1.jpg', 'logo4.png', 'okulov245.pas', 'okulov273.pas', 'plan1.jpg', 'plan2.jpg'])
Итак, налицо четыре кортежа (у нас четыре каталога – см. схему выше). Каждый кортеж
включает три элемента. Первый – это адрес каталога, второй – список поддиректорий не глубже
первого уровня, третий – список имен файлов. Если вложенных каталогов или файлов нет, то
соответствующий им список будет пуст.
Если мы еще раз запустим цикл с переменной tree, то уже ничего не получим. Дело в том,
что объект-генератор, с которым переменная была связана, уже был использован, он выдал
свое содержимое и больше его не содержит. Поэтому, если требуется сохранить кортежи для
последующий обработки, то лучше сохранить их, например, в списке:
>>> import os
>>> pdir = 'G:/projects/pythoner.info/pypath/mydir'
>>> contdir = []
>>> for i in os.walk(pdir):
contdir.append(i)
>>> for i in contdir:
print (i)
('G:/projects/pythoner.info/pypath/mydir', ['dir2a', 'dir2b'], ['mash187.pas', 'mash189.pas', 'menu_.php', 'sg30.thm', 'xorg.conf', 'клав_тренажер.odt', 'Расписание 2004.xls'])
('G:/projects/pythoner.info/pypath/mydir\\dir2a', ['dir3'], ['less1.doc', 'Patro_Nia.ogg', 'Thumbs.db', 'Расписание 2004.doc'])
('G:/projects/pythoner.info/pypath/mydir\\dir2a\\dir3', [], ['equador.mid', 'fon1.jpg', 'logo4.png', 'logos.bmp', 'net_Alt.txt', 'plan1.jpg', 'poly995.mid', 'Thumbs.db', 'top_.php'])
('G:/projects/pythoner.info/pypath/mydir\\dir2b', [], ['bottom_.php', 'clear.gif', 'less1.html', 'okulov245.pas', 'okulov273.pas', 'plan2.jpg', 'sg30.sdv'])
С помощью функции walk() можно получить имена файлов с тем, чтобы в дальнейшем с ними
что-нибудь делать с помощью других методов Python и его модулей. Получить их можно,
извлекая из третьего элемента каждого кортежа. Сделать это можно так, как показано ниже:
for d, dirs, files in os.walk('c:/mydir'):
for f in files:
print (f)
Переменная d в каждой итерации связывается с первым элементом каждого кортежа (строкой,
содержащей адрес каталога), dirs – со вторым элементом (списком подкаталогов), а files -
со списками файлов очередного каталога. Чтобы извлечь списки файлов целиком, а не
выделять каждый файл по отдельности, можно сделать так:
for d, dirs, files in os.walk('c:/mydir'):
print (files)
И получить:
['mash187.pas', 'mash189.pas', 'menu_.php', 'xorg.conf', 'клав_тренажер.odt', 'Расписание 2004.xls']
['less1.doc', 'Patro_Nia.ogg', 'Расписание 2004.doc']
['bottom_.php', 'equador.mid', 'less1.html', 'net_Alt.txt', 'poly995.mid', 'top_.php']
['clear.gif', 'fon1.jpg', 'logo4.png', 'okulov245.pas', 'okulov273.pas', 'plan1.jpg', 'plan2.jpg']
Имена файлов не полные. Они не содержат адреса, следовательно, для операций с файлами
таких списков не достаточно. Для получения полных адресов подойдет функция
os.path.join(). С ее помощью можно объединить первый элемент кортежа, содержащий полный
путь, с именем каждого файла:
>>> path_f = []
>>> for d, dirs, files in os.walk('c:/mydir'):
for f in files:
path = os.path.join(d,f) # формирование адреса
path_f.append(path) # добавление адреса в список
>>> path_f
['c:/mydir\\mash187.pas', 'c:/mydir\\mash189.pas', 'c:/mydir\\menu_.php', 'c:/mydir\\xorg.conf', 'c:/mydir\\клав_тренажер.odt', 'c:/mydir\\Расписание 2004.xls', 'c:/mydir\\dir2a\\less1.doc', 'c:/mydir\\dir2a\\Patro_Nia.ogg', 'c:/mydir\\dir2a\\Расписание 2004.doc', 'c:/mydir\\dir2a\\dir3\\bottom_.php', 'c:/mydir\\dir2a\\dir3\\equador.mid', 'c:/mydir\\dir2a\\dir3\\less1.html', 'c:/mydir\\dir2a\\dir3\\net_Alt.txt', 'c:/mydir\\dir2a\\dir3\\poly995.mid', 'c:/mydir\\dir2a\\dir3\\top_.php', 'c:/mydir\\dir2b\\clear.gif', 'c:/mydir\\dir2b\\fon1.jpg', 'c:/mydir\\dir2b\\logo4.png', 'c:/mydir\\dir2b\\okulov245.pas', 'c:/mydir\\dir2b\\okulov273.pas', 'c:/mydir\\dir2b\\plan1.jpg', 'c:/mydir\\dir2b\\plan2.jpg']
Пример имеет, скорее всего, демонстрирующее, а не практическое значение, т.к.
результирующий список содержит повторяющиеся части строк. Поэтому лучше напрямую работать с
кортежем, извлеченным из объекта-генератора.
среда, 31 марта 2010 г.
Dzen python
- Beautiful is better than ugly.
- Explicit is better than implicit.
- Simple is better than complex.
- Complex is better than complicated.
- Flat is better than nested.
- Sparse is better than dense.
- Readability counts.
- Special cases aren’t special enough to break the rules.
- Although practicality beats purity.
- Errors should never pass silently.
- Unless explicitly silenced.
- In the face of ambiguity, refuse the temptation to guess.
- There should be one — and preferably only one — obvious way to do it.
- Although that way may not be obvious at first unless you’re Dutch.
- Now is better than never.
- Although never is often better than 'right now'.
- If the implementation is hard to explain, it’s a bad idea.
- If the implementation is easy to explain, it may be a good idea.
- Namespaces are one honking great idea — let’s do more of those!
- Красивое лучше, чем уродливое.
- Явное лучше, чем неявное.
- Простое лучше, чем сложное.
- Сложное лучше, чем запутанное.
- Плоское лучше, чем вложенное.
- Разреженное лучше, чем плотное.
- Читабельность имеет значение.
- Особые случаи не настолько особые, чтобы нарушать правила.
- Хотя практичность побеждает стремление к чистоте.
- Ошибки никогда не должны замалчиваться.
- Если не замалчиваются явно.
- Если видишь двусмысленность, отбрось искушение угадать.
- Должен существовать один — и, желательно, только один — очевидный способ сделать это.
- Хотя он поначалу может быть и не очевиден, если вы не голландец.*
- Сейчас лучше, чем никогда.
- Хотя никогда зачастую лучше, чем прямо сейчас.
- Если реализацию сложно объяснить — идея плоха.
- Если реализацию легко объяснить — идея, возможно, хороша.
- Пространства имён, черт возьми, — отличная штука! Будем делать их побольше!
* Шутливый намек на национальность Гвидо
Подписаться на:
Сообщения (Atom)