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

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

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

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

Q&A

解決済

1回答

624閲覧

Pythonの実行を簡略化

O.K.

総合スコア30

Python

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

0グッド

0クリップ

投稿2018/01/19 14:05

pythonで任意の拡張子をもつファイルを削除するプログラムを書きました。
いちいちファイルの場所に行って

Python hogehoge.py

とするのは面倒なので、unixコマンドのように
lsや、cd ~/hogehoge
など簡単なコマンドでファイルを実行したいと考えています。

これを実現するためのモジュールか何かがあれば教えて下さい。

実行環境:
Mac, Python3.6

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

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

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

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

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

guest

回答1

0

ベストアンサー

質問意図と少し外れると思いますが・・・

せっかくunixライクなMacintoshなのですからPython hogehoge.pyと打ち込まなくてもhogehoge.pyが普通のコマンドのように使えるようにしてはいかがでしょうか?

例えば

python

1#!/usr/bin/python 2import sys 3for arg in sys.argv: 4 print(arg)

このようなファイルをecho.pyとして作成しchmod +xで実行権限を付けてやると

bash

1$ chmod +x echo.py 2$ ./echo.py hello world 3./echo.py 4hello 5world

(訂正:最初の回答では./echo.pyが印字されることが抜けてました。失礼しました)

というぐあいにあたかもecho.pyが組み込みコマンドかのようにして使えます。こうできるカラクリは先頭行に書いた#!/usr/bin/pythonという行です。unix系osではCコンパイラーなどで作成したネイティブな機械語の実行可能ファイルだけでなく実行権限が付与された普通のテキストファイルであっても先頭行が#!スクリプトインタープリタのパスとなっていれば

起動しようとしているスクリプトファイル名 引数...

のように実行しようとするとあたかも

スクリプトインタープリタ 起動されたファイル 引数...

と起動されたかのように解釈してくれます。これはpythonに限らず一般的なスクリプトインタープリタ(スクリプトファイルを引数にして実行できるようなあらゆるもの。Pythonもそうです。)で使える一般的な方法です。unix系OSの便利な点はこれがbashなどのシェル上から起動された場合のみならず、実行可能ファイルを起動するexecシステムコールレベルでこの機構がサポートされていることで、そのためfind ... -exec コマンド...などのようにシェル以外から起動されるような場合でも同様に動いてくれます。要するにCコンパイラーのようなものだけがunixでのコマンドを作成する唯一の手段ではなくとても手軽にコマンドが作れるわけですね。

というわけで普段から使うコマンドをpythonなどで作るような場合、例えば~/binに置くことにしておき、.bash_profileに以下のように書いておくことでいつでもどこでもbash上からコマンド名だけで呼び出せます。

bash

1... 2export PATH="$PATH:~/bin"

bash

1$ echo.py hello world 2hello 3world

こうしておくことで、lsやcdを自分でpythonスクリプトに組み込まずとも充分使い勝手のよい自分だけのコマンドecho.pyが出来上がります。hogehoge.pyも同じようにしておけば今のままで充分便利に使えるのではないでしょうか?


ちなみにpythonスクリプトは分かり易さのため大抵xxx.pyのように拡張子を.pyにすると思いますが、実際は拡張子が.pyでなくてもpython スクリプトファイル名とすれば動いてくれると思います。つまり上記の方法で動かす際にhogehoge.pyという名前でなくhogehogeというスクリプトファイル名でもよいと思います。コマンド名だけで起動できるのですが末尾の".py"を打ち込むのが面倒ならhogehogeという名前にしてもよいですし、「pythonスクリプトで作成したコマンド」ということが分かった方がよいという理由で拡張子を.pyのままにしておくのもよいと思います。

投稿2018/01/19 15:02

編集2018/01/19 15:40
KSwordOfHaste

総合スコア18394

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

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

O.K.

2018/01/22 09:39

回答ありがとうございます。 返信が遅れてしまいすいません。 まさに私が欲していた情報でした。 参考になります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問