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

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

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

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

Q&A

解決済

2回答

224閲覧

pythonでコマンドを動かし、別なプログラムの結果を保存する方法

simasimaa

総合スコア41

Python 3.x

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

0グッド

0クリップ

投稿2017/09/14 04:37

python3

1#sin.py 2import numpy as np 3import matplotlib.pyplot as plt 4import os 5from datetime import datetime 6simulation_time=datetime.now() 7 8folder_name = "sin_{0:%Y%m%d-%H%M%S}".format(simulation_time) 9os.mkdir(folder_name) 10 11x=np.arange(1,10,0.1) 12y=np.sin(x) 13plt.plot(x,y) 14 15file_name="{}\\sin.png".format(folder_name) 16plt.savefig(file_name) 17plt.show()
```python3 #main.py import os for i in range(5): os.system("python sin.py")

main.pyでsin.pyを動かして、sin.pyのなかでフォルダーを作り保存しています。しかし、これからやろうと思っているのはこのように保存を持っていないプログラムをmain.pyのようにコマンドで自動で動かし、特定のフォルダをつくり保存したいと考えております。

そのようなことはできますか?

python3

1#sin2.py 2import numpy as np 3import matplotlib.pyplot as plt 4x=np.arange(1,10,0.1) 5y=np.sin(x) 6plt.plot(x,y) 7plt.show()

sin2.pyで出てきたsinのグラフをフォルダーをつくり保存まで持っていくにはどうしたらいいでしょうか。最終目的はオープンソースのソフトウェアを実行し結果を保存することなのでできるだけ中身は書き換えない方向でやりたいと思っています。

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

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

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

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

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

guest

回答2

0

ベストアンサー

やりたいこと(何に困っているのか)がうまく把握できているか自信がありませんが、以下のような構成で各プログラムを書くとよいと思います。

  • 各処理が必要な情報はコマンドライン引数や(テキスト)ファイルで渡します。
  • 処理結果は、自身が処理しやすい(テキスト)フォーマットを決めてファイル入出力で渡します。
  1. 「保存を持っていないプログラム」(オープンソース?)に結果ファイル出力する処理を追加する。
  2. 結果ファイルから画像出力するプログラムを用意する
  3. メイン側ではディレクトリを作成し、各処理を実行する。

既存オープンソース?のプログラムには、すでにファイル出力する機能があるかもしれませんので調べてみるのもよいでしょう。

calc.py : 処理を実行して結果をファイル出力

Python

1# コマンドライン引数を解析 2# 出力データファイルパスを得る 3# やりたい処理 4# 処理結果をファイル出力

plot.py : 処理結果をグラフ描画し画像ファイル出力

Python

1# コマンドライン引数を解析 2# 入力データファイルパスと出力画像ファイルパスを得る 3 4# 入力データを読込 5# グラフ画像を描画 6# グラフ画像をファイル出力

main.py : 全体動作制御

Python

1import os 2folder_name = './ret' 3os.mkdir(folder_name) 4for i in range(5): 5 sin_data_path = '%s/sin_data%d.txt'%(folder_name,i+1) 6 os.system('python calc.py -out %s'%sin_data_path) 7 sin_img_path = '%s/sin_img%d.png'%(folder_name,i+1) 8 os.system('python plot.py -in %s -out %s'%(sin_data_path,sin_img_path))

投稿2017/09/14 05:27

編集2017/09/14 05:30
can110

総合スコア38233

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

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

simasimaa

2017/09/14 06:40

回答ありがとうございます。結局目的とするソフトのソースをいじって保存をするようにしました。 cythonで書かれているため書き換えるのが怖かったためソースを書き換えない方法が無いか探しましたが結局書き換えることができてこれに落ち着きました
guest

0

とりあえずpyplotにグラフ保存の命令がありますので、それを使えばグラフ自体は保存できそうですね。
matplotlib.pyplot.savefig - pyplot

フォルダの作成に関しても、標準モジュール os に入ってますね。
os.mkdir - Python公式ドキュメント

具体的なソースは以下のような感じになりますでしょうか?

python

1# sin2_modify.py 2# 動作検証していません。ご容赦ください。 3 4import numpy as np 5import matplotlib.pyplot as plt 6import os 7 8x=np.arange(1,10,0.1) 9y=np.sin(x) 10plt.plot(x,y) 11 12os.mkdir("path/to/dir", 0o755) 13plt.saveflg("path/to/dir/graphs.svg")

解決の糸口になれば幸いです。

投稿2017/09/14 05:12

manzyun

総合スコア2244

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問