質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.39%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

601閲覧

【python】exeにすると動かない

snow1005

総合スコア0

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2023/05/17 07:13

python上では動きますが、exe化にすると動かなくなります。

ライブラリのインポート

import glob
import openpyxl
import pandas as pd

空のデータフレームを作成

df = pd.DataFrame(columns=["施工月日", "打設順", "杭番号", "符号", "杭径", "杭実長", "掘削設計", "掘削実測", "増減長", "生コン設計", "生コン実測", "ロス率"])

ファイルパスのリスト取得

path_str = "t_*.xlsm"
paths = glob.glob(path_str)

for file_path in paths: # file_path変数にファイルパスが1つずつ入る
# 空の辞書を作成
wb_data = {}
# ブックを開く
wb = openpyxl.load_workbook(file_path, data_only=True)
# 野帳シートを取得
sheet = wb["野帳集計"]

value = sheet["A3"].value # A2セルの値取得 wb_data["施工月日"] = value # 行辞書に追加 value = sheet["B3"].value # B2セルの値取得 wb_data["打設順"] = value # 行辞書に追加 value = sheet["C3"].value # C2セルの値取得 wb_data["杭番号"] = value # 行辞書に追加 value = sheet["D3"].value # D2セルの値取得 wb_data["符号"] = value # 行辞書に追加 value = sheet["E3"].value # E2セルの値取得 wb_data["杭径"] = value # 行辞書に追加 value = sheet["F3"].value # E2セルの値取得 wb_data["杭実長"] = value # 行辞書に追加 value = sheet["G3"].value # E2セルの値取得 wb_data["掘削設計"] = value # 行辞書に追加 value = sheet["H3"].value # E2セルの値取得 wb_data["掘削実測"] = value # 行辞書に追加 value = sheet["I3"].value # E2セルの値取得 wb_data["増減長"] = value # 行辞書に追加 value = sheet["J3"].value # E2セルの値取得 wb_data["生コン設計"] = value # 行辞書に追加 value = sheet["K3"].value # E2セルの値取得 wb_data["生コン実測"] = value # 行辞書に追加 value = sheet["L3"].value # E2セルの値取得 wb_data["ロス率"] = value # 行辞書に追加 # 辞書をデータフレームに変換 add_df = pd.DataFrame([wb_data]) # データフレームに行を追加 df = pd.concat([df, add_df], axis=0, ignore_index=True) # ブックオブジェクトを閉じる wb.close()

書き込むExcelファイルのパス

write_file_path = "施工集計表.xlsx"

既存のワークブックを開く

wb = openpyxl.load_workbook(write_file_path)

シートを取得

sheet = wb["施工集計表"]

データフレームの内容を書き込む

for i in range(len(df)):
# 行のデータを取得
row_data = df.iloc[i]
# セルに値を書き込む
sheet.cell(row=i+8, column=1, value=row_data["施工月日"])
sheet.cell(row=i+8, column=2, value=row_data["打設順"])
sheet.cell(row=i+8, column=3, value=row_data["杭番号"])
sheet.cell(row=i+8, column=4, value=row_data["符号"])
sheet.cell(row=i+8, column=5, value=row_data["杭径"])
sheet.cell(row=i+8, column=6, value=row_data["杭実長"])
sheet.cell(row=i+8, column=7, value=row_data["掘削設計"])
sheet.cell(row=i+8, column=8, value=row_data["掘削設計"])
sheet.cell(row=i+8, column=9, value=row_data["増減長"])
sheet.cell(row=i+8, column=10, value=row_data["生コン設計"])
sheet.cell(row=i+8, column=11, value=row_data["生コン実測"])
sheet.cell(row=i+8, column=12, value=row_data["ロス率"])

ファイルを保存

wb.save(write_file_path)

ブックオブジェクトを閉じる

wb.close()

何が問題なのか模索していますが、原因が分かりません。
プログラミングの初心者ですので、分かりやすく解説していただけると助かります。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

AbeTakashi

2023/05/17 08:27

ソースコードよりもexe化した手順、exe化したプログラムをどう動かしたか、「動かなくなります」とは具体的にどういう状況になってるか(実行したときにエラーメッセージが出るか、出る場合はそのメッセージ内容など)の情報が重要かと思います。OSやPythonのバージョンの情報なども合わせて入れるとより回答が出やすくなると思います。質問文は編集できますので、追記されるといいかと思います。
y_waiwai

2023/05/17 11:26

このままではコードが読めないので、質問を編集し、</>(コードの挿入)ボタンを押し、出てくる’’’の枠の中にコードを貼り付けてください
guest

回答1

0

あるあるのはなしですが、
exeファイルにした場合、実行するディレクトリが変わってしまうために、ファイル操作のところでそのファイルが見つけられなくなってしまうってのがあります

とりあえず、

paths = glob.glob(path_str)

のpathsがどうなってるか確認してみてはどうでしょう

投稿2023/05/17 21:03

y_waiwai

総合スコア87981

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.39%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問