Найти - Пользователи
Полная версия: Excel -> Python -> Excel
Начало » Python для новичков » Excel -> Python -> Excel
1
L1pton
Доброго времени суток.

Просьба для опытных ребят, подсказать, как сделать с чего хотя бы начать..

Задача:
- Имеем несколько файлов csv, в каждом есть информация, в ячейках R1C1, R2C1 (нужны грубо говоря для оглавления информации) и ячейки с R4C1 и вниз R8, R9 и т.д. (это уже сама информация. В некоторых файлах 1 строка, в каких-то по 50).
Так вот нужно скопировать эти данные из всех excel-файлов в один, грубо говоря просто в столбик, чтобы информация для друг за другом.

Имеется Python 3, Anaconda.

p.s. - Понимаю, что эта тема из серии “парень, кури форум.”
Я так и сделаю, правда, но времени уже почти не осталось. Скоро эти несколько файлов превратятся в тысячи.
Пайтон я изучаю примерно 2 недели, на Codecadamy прошёл только 33%.. Начитавшись функционала всяких xlrd, xlwt и т.п. - окончательно запутался.
L1pton
Допустим, чтение входного файла.

import xlrd
rb = xlrd.open_workbook('d: /final.xls', formatting_info=True)
sheet = rb.sheet_by_index(0)
for rownum in range(sheet.nrows):
row = sheet.row_values(rownum)
for c_el in row:
print (c_el)

Понимаю этот отрывок примерно на 80%.
1) Как допустим сделать так, чтобы он брал все файлы с расширением .csv ? Ну или на крайняк .xls.
2) Почему при компиляции постоянно ругается на :
File “F:\Soft\Anaconda3\lib\site-packages\xlrd\__init__.py”, line 114, in open_workbook
with open(filename, “rb”) as f:
doza_and
L1pton
1) Как допустим сделать так, чтобы он брал все файлы с расширением .csv ?
Вот так.
 import glob
with open("out.txt","w") as out:
    for i in glob.glob("*.csv"):
        with open(i,"r") as f:
            for j in range(4):
                f.readline()
            out.write(f.read())
L1pton
Почему при компиляции постоянно ругается на :
Питон не может ругаться при компиляции. Он вообще не компилирует.

Может такой вариант вам будет ближе
 import glob
from fileinput import input as inp
with open("out.txt","w") as out, inp(files=glob.glob("*.csv")) as in_file:
    for line in in_file:
        if in_file.filelineno()>4:
            out.write(line)

py.user.next
L1pton
Скоро эти несколько файлов превратятся в тысячи.
Нужно разделить задачу на несколько независимых друг от друга задач. То есть обработка одного файла не должна знать про то, что их тысячи. И перебор тысячи файлов не должен знать, что с ними будет проводиться обработка.
И вот когда у тебя есть две эти программы, полностью рабочие по отдельности, тогда ты их можешь соединить, чтобы программа поиска файлов поставляла файлы программе обработки одного файла.

Тут можешь общий принцип посмотреть. Это пример решения сложной задачи (посложнее, чем у тебя). Задача разкладывается на мелкие части (проводится декомпозиция) и дальше они становятся такими простыми, что их становится сделать элементарно. И потом они соединяются воедино и всё работает точно и правильно, хотя сама задача очень сложная.
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