「みんな教えて! 選手権!!」開催のお知らせ

read_files.pyで複数メソッドを定義して
exeメソッドから他のメソッドを利用したいのですが
他のメソッドが定義されていませんというエラーが出てしまいます
解決方法を教えてください。

************************PythonAplication1.py********************

import read_files

r = read_files
r.read_files.exe()



************************read_files.py********************

# coding: shift_jis

import glob
import openpyxl as excel

class read_files:
# 対象フォルダと保存先のファイル名を指定
dirName = "./ExcelWorkDir/"
target_dir = dirName + 'salesbooks'
save_file = dirName + 'matome.xlsx'
# メイン処理 --- (*1)
def exe():
# 売上一覧を書き込むブックを用意する
book = excel.Workbook()
main_sheet = book.active
# ファイルをを列挙して読む
enumfiles(main_sheet)
# 読み込んだデータを保存
book.save(save_file)

# ファイルを列挙する --- (*2)
def enumfiles(main_sheet):
# Excelファイルの一覧を得る --- (*3)
files = glob.glob(target_dir + '/*.xlsx')
# 各Excelブックを次々と読んでいく --- (*4)
for fname in files:
read_book(main_sheet, fname)

# ブックを開いて中身を読む --- (*5)
def read_book(main_sheet, fname):
print("read:", fname)
# Excelブックを読み込む --- (*6)
book = excel.load_workbook(fname, data_only=True)
sheet = book.active
# 売上データのある範囲を読み取る --- (*7)
rows = sheet["A4":"F999"]
for row in rows:
# セルの値をリストとして得る --- (*8)
values = [cell.value for cell in row]
if values[0] is None: break
print(values)
# メインシートに値をコピー --- (*9)
main_sheet.append(values)

# メインプログラムを実行 --- (*10)
if __name__ == "__main__":
exe()

# ファイル保存場所:C:\Users\PC-USER\source\repos\PythonApplication1\PythonApplication1
# ファイルを保存 --- (*5)
dirName = dirName + 'hello.xlsx'
book.save(dirName)

A 回答 (2件)

read_files.pyをモジュールとして登録した場合です。


Application.py
----------------------------
import read_files
read_files.exe()

-----------------------------
read_files.pyは下記URLへアップしました。
https://ideone.com/w6GKR1
    • good
    • 0

read_filesはクラスではなく、モジュールとして登録したほうが、良いかと


思いますが、とりあえずクラスとして実装してみました。

PythonAplication1.py
------------------------------------
import read_files
r = read_files.read_files()
r.exe()


------------------------------------
read_files.pyはインデントが崩れるので、下記URLにアップしました。
https://ideone.com/giQaZp
尚、最下行にbook.save(dirName)がありますが、この行があるとエラーになるため、これはコメントにしてあります。(なにをなさりたいのかがよくわからない為エラーをとることはしていません)
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報