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

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

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

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

525閲覧

リアルタイムでファイルAからファイルBに変数を渡す!?(;´∀`)

City

総合スコア25

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2018/07/09 05:28

編集2018/07/09 06:16

こんにちは。

まず、プログラムの説明をさせていただきます。

これは、 PC を触りすぎてしまう自分への対策として作ったプログラムです。
まず、 ファイルO の
今日は何分以内に終わるようにする??
という input() 文から、制限時間の変数 lim に値を代入します。
すると、 ファイルA と ファイルB が開き、
A ではカウントダウンが始まります。
一方、 B とは、 log を保存するか尋ねるウィンドウです。
"はい"を選択した場合に、その時の時刻を ファイルZ に書き込むことはできたのですが、
その時の lim の値を ファイルB より取得する方法が分かりません。
そういったことも可能にするプログラムはありませんか?
もしありましたら、ぜひご紹介をお願いします!!

ファイル O ????

Python

1import os 2import sys 3 4lim = input("本日の制限時間は : ") 5os.system("start A.py {}".format(lim)) 6os.system("start B.py")

ファイルA ???? 

Python

1import time 2import os 3import sys 4 5 6lim = sys.argv[1] 7i = 0 8 9while True : 10 print("-"*60) 11 print(f""" 12 13 14 ################################## 15 # # 16 # # 17 # {i} minutes have passed # 18 # # 19 # # 20 ################################## 21 22 あと{lim}23 24 """) 25 26 27 i += 0.5 28 lim -= 0.5 29 time.sleep(30) 30

ファイルB ???? (ここがわかりません...)

Python

1 2import time 3import os 4import sys 5from datetime import datetime 6 7 8while True : 9 response = input("logを保存するか。 (y / n) : ") 10 if response == "y" : 11 file = "Z.txt" 12 with open(file, mode='a',encoding="utf_8") as fileobj : 13 now = datetime.now() 14 fileobj.write(str(now)+"\n") 15 break 16 if response == "n" : 17 break 18 19# y が押されたときのlimの値を取得し、べつのファイルZに記録として書き込みたいのです。

( `・∀・´)ノ 追記です :
コードはすべてwindowsコマンドプロンプトからの実行です。

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

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

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

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

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

mather

2018/07/09 05:59

なぜファイルを分けたのですか?また、ファイルAが実行されているタイミングでファイルBは実行されないと思うのですが、どうやってファイルAの実行を止めているんですか?
mather

2018/07/09 06:05

というか、startってなんだろ…。いろいろ元のコードから書き換えていませんか?
City

2018/07/09 06:08

どうやら私は変なコードを書いてしまったようで、すみません。まず、ファイルを分けたことに意味はありません。また、ファイルAを閉じる際は右上の✖から閉じています。それから、startと書くのはこれがないと、うまく実行できないでからです。
mather

2018/07/09 06:12

ということは、どうやらWindowsのコマンドプロンプトから実行しているのですね。A.pyも新しいプロンプトが開かれるということですね?こういった状況をきちんと書いたほうがいいと思います。
City

2018/07/09 06:14

なるほど!これから追記することにします、ありがとうございますヽ(^。^)ノ
guest

回答1

0

ベストアンサー

結論をいうと、そのやり方では直接 lim の値を渡すことはできません。
理由は停止方法が「プログラムを強制停止する(コンソールウィンドウを閉じる)」であるため、 A.py の実行を停止したことによってメモリ上のデータは消えてしまうからです。

回避策の一つは lim を変更したタイミングで別のファイルに lim の値を書き込んでおくことです。

そのほか、複数のファイルに分けずに実装する方法もあると思うのですが、それはご自身で試してみてください。

投稿2018/07/09 08:34

mather

総合スコア6753

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

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

City

2018/07/09 09:51

先ほどのアドバイスに続いての回答ありがとうございます。 変数の変更があるたびに別の場所に書き込むという手法をとることにします。 ファイルを分けたのは、実はそのほうが簡単に思えたからなんです... とうわけで、それらを一つにまとめるということにも挑戦してみます ! (人''▽`)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問