Найти - Пользователи
Полная версия: КОД
Начало » Python для новичков » КОД
1 2 3
python4ik
Подскажите,как мне упростить этот код? Тоесть мне надо найти имеющиеся символы на диске 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])
python4ik
И почему-то на компе этот код немного работает,а на смарте нет! Хотя на смартф. есть эти символы!
Но не в смарф. дело! Как мне написать попроще код?
sypper-pit
кортеж может быть большим , тебе тогда проще перебор из файла пробовать делать… точно утверждать не могу нет подходящего устроиства под рукой
o7412369815963
найти имеющиеся символы на диске можно например так:
# 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)
o7412369815963
нужно только в walk диск выбрать,
и раз надо искать символы то символы в массиве и хранить вместо чисел
python4ik
Интерестно!
map,lambda я уже успел освоить слава богу!.Но пока я учу про set в нете,немного семантики можно?для лучшего понимания про set(пару слов!)
l=lambda x:'-'.join(x)
s='set'
l(s)
a=map(l,s.upper())
Ed
python4ik
Подскажите,как мне упростить этот код?
Для начала нужно его исправить, а потом уже упрощать.
Я вижу как минимум 2 ошибки - использование несуществующей переменной s1 и выход за границы списка l при количестве файлов в каталоге большем, чем длина l.
Кроме того код вообще не делает того, что вы хотите.
python4ik
Согласен на счёт s1. То я у себя при тестировании использовал ещё одну переменную s1 кроме s.
Тоесть на эту ошибку можно не обращать внимание.У меня в коде стояла s вместо s1.
А вот на счёт
выход за границы списка l при количестве файлов в каталоге большем, чем длина
можно по подробней?
Меня ведь и интересует,как довести код до ума.
Ed
python4ik
можно по подробней?
Можно и поподробнее.
представьте себе каталог с количеством файлов большим, чем длина l.
Смотрим на ваш код. В цикле for w in z: вы перебираете файлы, так? В том же цикле у вас увеличивается n на единицу и используется как индекс в l. таким образом если количество файлов в каталоге больше, чем длина l, то на некотором файле n станет тоже больше и вуаля - l приведет к “IndexError: list index out of range”.

Меня ведь и интересует,как довести код до ума.
Тогда подумайте о том, используете ли вы один символ из вашего списка для поиска в именах файлов или все.
python4ik
В том же цикле у вас увеличивается n на единицу и используется как индекс в l.
А ведь n стоит не в цикле for w in z,а увеличивается при условии,что символ из моего списка совпадает с одним из символов в файле!
По моему n увеличивается только при совпадении символов,а не при перебирании файлов!Если я ошибаюсь,просветите меня,какую я мелочь языка в Питоне недопонял.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB