Форум сайта python.su
Собственно задача. Есть каталог /home/test/sound/ там лежит насыпь файлов *.wav
Нужно пройтись циклом по файлам и получить их имена без расширения , затем найти совпадения в mysql и выбрать нужное поле например phone . Каждый из файлов нужно записать в каталон который будет называться как поле phone.
т. е имеем файл вася пупкин.waw ищем в таблице mysql запись где namre like ‘%вася пупкин%’ выбираем поле phone -например оно равно 7777 . создаем каталог локально /home/777/ и копируем туда это файл. Как-то так. Заранее спасибо.
Офлайн
Собственно задача. Нужно сходить за меня на работу, а то мне впадло, заработать много денег и принести мне. Заранее спасибо.
Офлайн
terabaytНет не впадло.
Собственно задача. Нужно сходить за меня на работу, а то мне впадло, заработать много денег и принести мне. Заранее спасибо.
Офлайн
a = [i[:-4] for i in os.listdir(r'/home/test/sound')]
Отредактировано terabayt (Июль 14, 2014 21:46:27)
Офлайн
#!/usr/bin/python # -*- coding: utf8 -*- import MySQLdb import string import os db = MySQLdb.connect(host="host", user="user", passwd="passwd", db="billing", charset="utf8") for param in os.listdir(r'/home/test/sound'): cursor = db.cursor() cursor.execute("SELECT phone FROM tables WHERE name LIKE %s", ("%" + param[:-4] + "%",)) data = cursor.fetchall() print data cursor.close()
Отредактировано terabayt (Июль 14, 2014 21:51:12)
Офлайн
danish
Проблемы у меня как раз с циклом и чтением названия файлов
>>> import glob >>> import os >>> >>> def getnames(dirpath, ext): ... pat = os.path.join(dirpath, '*.' + ext) ... files = glob.iglob(pat) ... names = tuple( ... os.path.basename(os.path.splitext(i)[0]) ... for i in files ... ) ... return names ... >>> getnames('/home/guest/tmp', 'txt') ('f1', 'f2') >>> getnames('/home/guest/tmp', 'jpg') ('blackwhite',) >>> getnames('/home/guest/tmp', 'mp3') () >>>
Отредактировано py.user.next (Июль 15, 2014 01:34:15)
Офлайн
terabaytСпасибо. Но этот код выбирает только одну запись ((( циклом он не проходит по всем файлам в каталоге
Офлайн
danishНет. Все ок. Спасибо. Я с отступами натупил )))
Офлайн
print data выводит перузльтаты типа ((u'2262',),) а мне нужно 2262 так как потом я делаю
if data:
try:
os.makedirs('/home/test/sound_name/%s'%data)
except OSError:
pass
и путь создания каиталога получаеться /home/test/sound_name/((u'2262',),)
Офлайн
danishПопробовал
print data выводит перузльтаты типа ((u'2262',),) а мне нужно 2262 так как потом я делаюif data: try: os.makedirs('/home/test/sound_name/%s'%data) except OSError: passи путь создания каиталога получаеться /home/test/sound_name/((u'2262',),)
Офлайн