0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

AtCoderのテストケース実行みたいにやりたかった。

Last updated at Posted at 2020-05-02

#やりたかったこと
皆さんはAtCoderのコードテストやyukicoderのオンライン実行のような機能を利用しようとしたことはありますか?わたしはそれをPythonで実行できたらいいなぁ~と思ってました。

まあ要するに.txtのファイルをPythonのinput()で読み込めたらいいなぁ~ってことです。

なおこの実行環境はWindows10です。
###コマンドプロンプトにおいて
まずはじめに適当なフォルダーを作ってそこに適当なinput用のinput.txtファイルとinput()関数が入ったmain.pyファイルをぶち込んでみましょう。

コマンドプロンプトでさっき作ったフォルダーに移動してpython main.py < input.txtと入力するとあら不思議、textファイルから読み込めているではありませんか!!

ちなみにこれをopen(0).read()とかでやっても動きます。

###Pythonにおいて
わたしはsubprocessでやろうとして試行錯誤しまくって3日つぶしました。あほです。以下のソースコードでprint関数で出てくるoutputが出て来ます。timeoutオプションは実行時間制限、shell=Trueで本物のコマンドプロンプトで動いてくれます。ちなみにoutputはbyte型で出てくるので文字列型にしたい方はencode()で煮るなり焼くなりしてくださいな...

しかし公式のドキュメントにはセキュリティの脆弱性になりうるので使わないことが推奨されます。Winodws滅びの呪文を指定してしまったらPythonだけでなくWindowsごと消え去ってしまいますからね...

import subprocess
print(subprocess.check_output('python main.py < input.txt',timeout=5,shell=True))

###実はほかにも...
Popen()関数でもっと詳しくできるらしいです。全くわかりません。理解に5日ぐらいかかりそうです。

#最後に
クソ記事になりました。詳しくなったらもっと書きます。。。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?