Форум сайта python.su
Подскажите,как мне упростить этот код? Тоесть мне надо найти имеющиеся символы на диске D и допустим вывести их!
Так-как я ещё не со многими методами,функциями знаком,подсказка не помешала бы!
import os
l=[213, 206, 210, 197, 203, 206, 209, 220, 45, 193, 219, 32, 196, 206, 211, 215,
200, 210, 220, 32, 207, 200, 210, 206, 205, 44, 207, 206, 202, 192, 32, 207,
206, 223, 194, 200, 203, 206, 209, 220, 32, 206, 195, 208, 206, 204, 205, 206,
197, 32, 198, 197, 203, 192, 205, 200, 197, 33, 32, 207, 206, 205, 200, 204,
192, 222, 32, 215, 210, 206, 32, 204, 205, 206, 195, 206, 197, 32, 199, 192,
194, 200, 209, 200, 210, 32, 206, 210, 32, 209, 192, 204, 206, 209, 210, 206,
223, 210, 197, 203, 220, 205, 206, 201, 32, 208, 192, 193, 206, 210, 219, 44,
205, 206, 32, 209, 206, 194, 197, 210, 32, 193, 219, 32, 205, 197, 32, 207,
206, 204, 197, 216, 192, 203, 33]
n=0;s=''
for x,y,z in os.walk('d:\\'):
for w in z:
if chr(l[n]) in w or chr(l[n]) in s1:
print chr(l[n]),
n+=1
if n>=len(l):break
else:
s1+=chr(l[n])
Офлайн
И почему-то на компе этот код немного работает,а на смарте нет! Хотя на смартф. есть эти символы!
Но не в смарф. дело! Как мне написать попроще код?
Офлайн
кортеж может быть большим , тебе тогда проще перебор из файла пробовать делать… точно утверждать не могу нет подходящего устроиства под рукой
Офлайн
найти имеющиеся символы на диске можно например так:
# coding: utf-8
import os
l = [49,50]
l = map(lambda x:chr(x),set(l))
s = set(''.join([''.join(z) for x,y,z in os.walk('.')]))
print ','.join(x for x in s if x in l)
Офлайн
нужно только в walk диск выбрать,
и раз надо искать символы то символы в массиве и хранить вместо чисел
Офлайн
Интерестно!
map,lambda я уже успел освоить слава богу!.Но пока я учу про set в нете,немного семантики можно?для лучшего понимания про set(пару слов!)
l=lambda x:'-'.join(x)
s='set'
l(s)
a=map(l,s.upper())
Офлайн
python4ikДля начала нужно его исправить, а потом уже упрощать.
Подскажите,как мне упростить этот код?
Офлайн
Согласен на счёт s1. То я у себя при тестировании использовал ещё одну переменную s1 кроме s.
Тоесть на эту ошибку можно не обращать внимание.У меня в коде стояла s вместо s1.
А вот на счёт
выход за границы списка l при количестве файлов в каталоге большем, чем длинаможно по подробней?
Офлайн
python4ikМожно и поподробнее.
можно по подробней?
Меня ведь и интересует,как довести код до ума.Тогда подумайте о том, используете ли вы один символ из вашего списка для поиска в именах файлов или все.
Офлайн
В том же цикле у вас увеличивается n на единицу и используется как индекс в l.А ведь n стоит не в цикле for w in z,а увеличивается при условии,что символ из моего списка совпадает с одним из символов в файле!
Офлайн