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

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

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

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

Q&A

解決済

2回答

3424閲覧

任意のファイルの選択方法について

monkey.0435

総合スコア22

Python 3.x

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

0グッド

0クリップ

投稿2019/03/30 16:49

Python初心者です.
よろしくお願いします.

前提・実現したいこと

現在のディレクトリに以下のような画像ファイルが複数収納されているとします.

image1.JPG
image2.JPG
image3.JPG
image4.JPG

該当ソースコードに示すように,現在のディレクトリの中から任意のファイルを二種類選択して,「composite-im.JPG」という選択した二つの画像の合成画像を作成するプログラムを考えています.

しかし,ファイルを選択する際,input関数によってコマンドプロンプトにファイル名を直接入力することとなってしまい,非常に手間がかかり面倒に感じています.

このような場合,より簡単にファイルを選択する方法はないのでしょうか.(例えばドラッグ&ドロップ等)

稚拙な文章で申し訳ありません.
ご回答お待ちしております.

該当のソースコード

Python

1from PIL import Image , ImageDraw , ImageFilter 2import os 3 4path = os.getcwd() 5files = os.listdir(path) 6print(files,"\n") 7 8im1 = Image.open(input("ファイル名1:")) 9im2 = Image.open(input("ファイル名2:")).resize(im1.size) 10 11mask = Image.new("L", im1.size , 128) 12 13im = Image.composite(im1 , im2 ,mask) 14 15im.save ("composite-im.JPG") 16 17

補足情報(FW/ツールのバージョンなど)

windows10
Python 3.7.1

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

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

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

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

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

guest

回答2

0

... コマンドプロンプトにファイル名を直接入力...

mac なら、ファイルをドラッグ&ドロップしてフルパスの文字列を入力できます。

  • Macのターミナル.appでファイルやフォルダのパスを簡単に入力する方法

http://inforati.jp/apple/mac-tips-techniques/application-hints/how-to-enter-file-or-folder-path-into-mac-terminal-app-easily.html

追記
windwos でも同様のことができるのでは?

  • コマンドプロンプトの応用

http://www.ced.is.utsunomiya-u.ac.jp/lecture/2018/prog/p1/debugger/redirect.php

...
TIPS

エクスプローラからファイルやフォルダを選択し、コマンドプロンプトへドラッグ&ドロップすることで、コマンドラインにファイルやフォルダのパスをコピーすることができる。上記の場合、cd と入力した後に、ディレクトリ移動したいフォルダをドロップし、エンターキーを押せば良い。

...

投稿2019/03/30 23:33

編集2019/03/30 23:40
katoy

総合スコア22324

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

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

KSwordOfHaste

2019/04/01 04:31

普段cygwinを使うことが多い自分ですがcygwinのterminalへExplorerからDnDしてみると・・・同じことができました。恥ずかしながら初めて知りました。 今までかなり迂遠なことをしてたんですね... ^^;
guest

0

ベストアンサー

ドラッグ&ドロップを使うということはCUIアプリケーションではなくGUIアプリケーションとして設計しなおす必要があります。
Pythonで一番基本の(?)GUIライブラリーとしてtkinterが挙げられると思います。なぜならCPython 3.xなら追加インストールが必要なく最初から入っているからです。ただし例えばWindowsのexplorerやMacintoshのFinder(かな?)のようなPythonの外側のアプリケーションとPythonのアプリケーション間でDnDを達成する機能は(自分がちょっと調べた限りでは)以下のような追加モジュールを導入する必要があるようです。

http://www.ellogon.org/petasis/index.php/tcltk-projects/tkdnd

いずれにせよCUIとは異なりGUIはプログラムを作ること自体が難しいのでGUIアプリケーションにするだけでそれなりの学習が必要と思います。


CUIのままもうちょっとなんとかする方法としてはpythonプログラムの起動パラメータからファイル名を受け取るという方法もよいかも知れません。DnDに比べれば「操作が簡単」とはいえませんが、CUIを苦痛に感じないようなプログラマー向けとしてならいいのではないかと思います。

例えばbashなどであれば

$ yourprogram.py path-to-images/image[13].png

=>

$ yourprogram.py path-to-images/image1.png path-to-iamges/image3.png

なぁんて具合にファイル名を展開した上で実際のプログラムを起動してくれるため似たようなパスを長々とタイプしなくてもよいですね。

Pythonプログラム自体へのパラメーターはsysモジュールのargvを用いれば調べられます。

投稿2019/03/30 20:39

編集2019/03/30 20:41
KSwordOfHaste

総合スコア18394

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

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

monkey.0435

2019/04/01 16:03

ご回答ありがとうございます! GUIを学習しないといけないんですね... 頑張ります
KSwordOfHaste

2019/04/01 22:47

本件に限ってはkatoyさんの回答を利用すればD&Dを自分で実装しなくても(CUIアプリケーションのままでも)よいのですが、その点katoyさんの回答から読み取れましたか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問