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

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

新規登録して質問してみよう
ただいま回答率
85.47%
バックアップ

バックアップとは、保存データやプログラムの複製を異なる記録装置などへ保存することを言います。バックアップを取っておくことで、機器のトラブルでデータが損傷するなどの不測の事態にもデータを複製することが可能です。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

バックグラウンド処理

バックグラウンド処理とは、マルチタスク環境において、ユーザーに対して前面に表示させている処理の裏側で実行させる処理のことを呼びます。バックグラウンド処理を行う事によって、ユーザーが他の作業に携わることが可能となります。

Python

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

Q&A

0回答

145閲覧

バックアップソフトで、exe化するとうまく起動しなくなる

ttmm1111K

総合スコア0

バックアップ

バックアップとは、保存データやプログラムの複製を異なる記録装置などへ保存することを言います。バックアップを取っておくことで、機器のトラブルでデータが損傷するなどの不測の事態にもデータを複製することが可能です。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

バックグラウンド処理

バックグラウンド処理とは、マルチタスク環境において、ユーザーに対して前面に表示させている処理の裏側で実行させる処理のことを呼びます。バックグラウンド処理を行う事によって、ユーザーが他の作業に携わることが可能となります。

Python

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

0グッド

1クリップ

投稿2024/03/24 02:49

実現したいこと

GUIソフトでバックアップしたい物を選び、バックアップ先を指定し、バックアップの間隔を指定し情報が格納されてある.jsonを作成します。
そのjsonから情報を読み取り、バックアップソフトがバックグラウンドで指定された時間で定期的にバックアップするというものです。

発生している問題・分からないこと

環境
Windows10
Python3.11.8
VSCODE

VScodeで、デバックしている時は上手くいくのですがexe化していざ起動させるとうまくいかなくなります。GUIソフトはまた別ですがバックアップソフトは、パソコンが起動したらそのソフトも起動させたいため、バックグラウンド処理をさせたいです。

該当のソースコード

backup_script.py

1import json 2import os 3import shutil 4from datetime import datetime 5import schedule 6import time 7import tkinter as tk 8from tkinter import messagebox 9 10CONFIG_FILE_NAME = "backup_config.json" 11 12def get_application_path(): 13 """アプリケーション(スクリプト)が存在するディレクトリのパスを取得します。""" 14 return os.path.dirname(os.path.abspath(__file__)) 15 16def get_config_path(): 17 """設定ファイルのパスを取得します。""" 18 return os.path.join(get_application_path(), CONFIG_FILE_NAME) 19 20def load_config(): 21 """設定ファイルを読み込み、設定を返します。""" 22 config_path = get_config_path() 23 try: 24 with open(config_path, "r", encoding="utf-8") as config_file: 25 return json.load(config_file) 26 except FileNotFoundError: 27 # GUIではなくコンソールにエラーメッセージを表示 28 print("設定ファイルが見つかりません。") 29 return None 30 31def backup_files(config): 32 """設定に基づいてバックアップを実行します。""" 33 if not config: 34 return 35 36 items = config.get("backup_items", []) 37 destination_folder = config.get("destination_folder", "") 38 39 for item in items: 40 basename = os.path.basename(item) 41 timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") 42 destination_path = os.path.join(destination_folder, f"{basename}_{timestamp}") 43 44 try: 45 if os.path.isdir(item): 46 shutil.copytree(item, destination_path) 47 else: 48 shutil.copy2(item, destination_path) 49 print(f"バックアップ完了: {item} -> {destination_path}") 50 except Exception as e: 51 print(f"バックアップ失敗: {item}. エラー: {e}") 52 53def run_backup(): 54 """バックアップスケジュールを設定し、バックグラウンドで実行します。""" 55 config = load_config() 56 if not config: 57 return 58 59 backup_interval = config.get("backup_interval", 15) # デフォルトは15分 60 schedule.every(backup_interval).minutes.do(lambda: backup_files(config)) 61 62 print("バックアップスケジュールを開始します。バックグラウンドで実行中...") 63 while True: 64 schedule.run_pending() 65 time.sleep(1) 66 67if __name__ == "__main__": 68 run_backup()

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

バックアップソフトが、格納された情報を探せてないのかと思い、同じフォルダ内から検索するようにしたが上手くいかずでした。
おそらく、バックグラウンドで起動させている時にうまくいかないのだろうと予想しますが、初心者なもので分からずじまいで質問させていただきます。
よろしくお願いいたします!

補足

特になし

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

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

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

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

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

umimi

2024/03/24 04:15

『Python で、自分で書いたバックアップする .py を書いた。.py のままでは、うまく動くが、.exe 化したら、うまく動かない』という事でしょうか ?
ttmm1111K

2024/03/24 04:53

コメントありがとうございます。おっしゃる通りでございます。
Refrain

2024/03/24 07:24

動かないのはGUIのあるソフト側ですか? それともバックグラウンドで走らせるプログラム側ですか? 後者であればプログラムが走ることは出来ているのか、そもそも走っていないのかが知りたいです。
otn

2024/03/24 17:13

> VScodeで、デバックしている時は上手くいくのですがexe化していざ起動させるとうまくいかなくなります。 このあたりの進め方(手順)が間違ってます。記述を省略しただけなら良いのですが。 1.端末から、「python pyファイル名」で、期待通り動くか確認する 2.exe化して、端末から「exe化したファイル名」で、期待通り動くか確認する 3. バックグラウンドで「python pyファイル名」を実行して、期待通り動くか確認する 4.バックグラウンドで「exe化したファイル名」を実行して、期待通り動くか確認する を実行してそれぞれどうなりましたか? また、それ以前の段階として、バックグラウンド起動の設定手順が完全にあたなの手の内でない場合は、 バックグラウンド起動の設定手順が合っているかどうかの確認手順も必要です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問