Форум сайта python.su
0
Здрям!
Пишу программу по подсчету количества словосочетаний в файлах.
Логика программы:
1. из трех папок скопировать по маске файлы *.doc и *.docx;
2. открыть каждый файл и скопировать текст от начала документа до волшебного слова в общий txt файл;
3. посчитать количество определенных словосочетаний в txt файле;
4. вывести результат на печать.
Итак, по порядку.
import codecs #Модуль для чтения в разных кодировках #Чтение путей f=open("name.txt", encoding = 'UTF-8') #построчное чтение путей в переменные czk=f.readline() pdzk=f.readline() kz=f.readline() #проверка корректности чтения путей print(czk) print(pdzk) print(kz)
import glob [shutil.copy(czk,ЦЗК) for filename in glob.glob('czk'+'\Проект*гы*.doc?')]

Отредактировано Kir@ (Авг. 20, 2015 08:13:09)
Офлайн
857
Через os.walk() нужно файлы искать.
Офлайн
0
Ничего не показывает:
import os for root, dirs, files in os.walk(czk): for name in files: print(os.path.join(root, name)) for name in dirs: print(os.path.join(root, name))
Офлайн
0
Кстати, путь у меня длинный, примерно такой:
\\трататата.тата\share\трататататата_тратаратарта\тыцтыц ЦЗК\2015\тыц 08_2015
Офлайн
857
Выполни
list(os.walk(czk))
Kir@В ответ на несуществующий путь возвращается пустой генератор.
примерно такой
>>> for a, b, c, in os.walk('x'): ... print(a, b, c) ... >>>
Отредактировано py.user.next (Авг. 20, 2015 09:41:42)
Офлайн
0
Экранировал. Правда, путь пришлось непосредственно в программе прописать.
Как теперь к этому коду прикрутить маску “*.doc?”?
import os for root, dirs, files in os.walk(czk): for name in files: print(os.path.join(root, name))
Офлайн
253
Здрям!
py.user.nextЯ бы в таком случае искал при помощи glob. Те создал для этих трех папок общую папку и переместил их туда. Или если их нельзя перемещать символьную ссылку на эти папки.
Через os.walk() нужно файлы искать
import glob for i in glob.glob("myfolder/*/*.doc?"): ....
Офлайн
0
doza_andТ.е. вот такого фокуса, как в c#, не получится?
Самая засада это пункт 2. Фиг вы чего сможете прочитать из doc или docx.
тут 3 пути
//Пихаем содержимое файла в textbox Microsoft.Office.Interop.Word.Application word = new Microsoft.Office.Interop.Word.Application(); object miss = System.Reflection.Missing.Value; object pathh = Path.Combine(direct + "\\" + fileName.ToString()); // путь; object readOnly = true; Microsoft.Office.Interop.Word.Document docs = word.Documents.Open(ref pathh, ref miss, ref readOnly, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss); string totaltext = ""; for (int ii = 0; ii < docs.Paragraphs.Count; ii++) { totaltext += " \r\n " + docs.Paragraphs[ii + 1].Range.Text.ToString(); } textBox1.Text = totaltext; docs.Close(); word.Quit();
Отредактировано Kir@ (Авг. 20, 2015 10:48:14)
Офлайн
0
doza_andПриключения уже нашли меня. Директории называются русскими буквами вперемешку с пробелам, цифрами и прочими еретическими знаками.
Если ищете приключений на свою … то тогда пожалуйста используйте директории с русскими названиями, если нет то настоятельно не советую. Оно вам красным помечает….
Офлайн
0
doza_and
Обратите внимание на слеши - они в другую сторону.
for root, dirs, files in os.walk(czk): for name in files: for filename in glob.glob(czk+'\*.doc?'): print(filename)
Отредактировано Kir@ (Авг. 20, 2015 11:06:41)
Офлайн