*python написание скрипта застопорилось на бытовой почве. Есть задача поместить в список имена файлов с их размерами. Сначала я пробегал директорию с помощью os.walk и на каждой итерации вносил значения в список. В итоге получился двумерный массив. Все бы хорошо, но имена кириллические в удобочитаемый вид перекодировать не удалось. Решил попробовать glob. Получаю список файлов, но теперь-то массив одномерный, надо запихать туда размеры файлов. Как быть, ребята? Поможите уйти от ненавистного bash'а :-)
#288111 from laptop, 4 months ago
Replies (13)
- пройтись в цикле по списку, вычислять размер и вносить в новый список :)#288111/1 by Evgen from Gajim, 4 months ago
- @Evgen это решение влоб :-) я думал, можно как-то хитро расширить список#288111/2 by drakulavich from laptop, 4 months ago
- а чего б сразу не делать как то так#288111/3 by Evgen from Gajim, 4 months ago
o = []
for i in glob.glob('*.png'): o.append([i, os.path.getsize(i)]) - @Evgen мерси. Попробовал, опять вместо букв мешанина. Может i надо как-то заюникодить?#288111/4 by drakulavich from laptop, 4 months ago
- @Evgen o = [(i, os.path.getsize(i)) for i in glob('*.png')] но наступит жопа, если кто--то назовет каталог x.png#288111/5 by shigin from dervish, 4 months ago
- @shigin ну проверку сделать на некаталог :)#288111/6 by Evgen from Gajim, 4 months ago
- @shigin чего-то не хватает для полного счастья:#288111/7 by drakulavich from laptop, 4 months ago
o = [(i, os.path.getsize(i)) for i in glob('*.png')]
TypeError: 'module' object is not callable - @drakulavich from glob import glob. Меня бесит glob.glob#288111/8 by shigin from dervish, 4 months ago
- @shigin спасибо, заработало. но проблема с именами опять вылезла. Получаю на 'print o':#288111/9 by drakulavich from laptop, 4 months ago
[('/home/anton/\xd0\x94\xd0\xbe\xd0\xba\xd1\x83\xd0\xbc\xd0\xb5\xd0\xbd\xd1\x82\xd1\x8b/Workspace/python study/test/\xd0\xbe\xd0\xb4\xd0\xb8\xd0\xbd.txt', 0L), ('/home/anton/\xd0\x94\xd0\xbe\xd0\xba\xd1\x83\xd0\xbc\xd0\xb5\xd0\xbd\xd1\x82\xd1\x8b/Workspace/python study/test/test.mp3', 648359L), ('/home/anton/\xd0\x94\xd0\xbe\xd0\xba\xd1\x83\xd0\xbc\xd0\xb5\xd0\xbd\xd1\x82\xd1\x8b/Workspace/python study/test/test.ogg', 1168981L), ('/home/anton/\xd0\x94\xd0\xbe\xd0\xba\xd1\x83\xd0\xbc\xd0\xb5\xd0\xbd\xd1\x82\xd1\x8b/Workspace/python study/test/\xd0\xb4\xd0\xb2\xd0\xb0.txt', 0L)] - @drakulavich нормально все, сделай print o[0][0]#288111/10 by Evgen from Gajim, 4 months ago
- @Evgen действительно, отображает как надо. А в чем прикол с выводом списка?#288111/11 by drakulavich from laptop, 4 months ago
- @drakulavich print o[0][0] Тут есть такая проблема, что при выводе для элементов массива или тупла вызывается repl, а он предназначен для того, что бы потом на это можно было сказать eval#288111/12 by shigin from dervish, 4 months ago
- @shigin для меня это китайская грамота, но главное, что элементы будут отображаться правильно. Что мне и требуется. Спасибо еще раз.#288111/13 by drakulavich from laptop, 4 months ago
