質問するログイン新規登録

回答編集履歴

4

追記の追記

2021/03/22 13:36

投稿

etherbeg
etherbeg

スコア1195

answer CHANGED
@@ -66,6 +66,12 @@
66
66
 
67
67
  ---
68
68
 
69
- (追記)
69
+ 追記)
70
70
  テスト用に私が作った上記の Automator アプリですが、テストを繰り返していたところ、一度にドラッグ&ドロップしたファイルのうち、一部が処理から漏れたり、ひどい時は全く処理ができなくなったりする不具合が観測されています。少しだけ調査をしてみましたが、原因はわかっていません。I/O が伴う処理なので処理が追いついていないのかと思い、引数をすべてまとめて python 側に渡し、Python 側でループさせてもみましたが、結果は一緒でした。
71
- 質問者さんの環境とスクリプトで同様の不具合が発生するかどうかはわかりませんが…。念のため追記しておきます。
71
+ 質問者さんの環境とスクリプトで同様の不具合が発生するかどうかはわかりませんが…。念のため追記しておきます。
72
+
73
+ ---
74
+
75
+ (追記の追記)
76
+ ドラッグ&ドロップが可能なアプリケーション形式ではなく、右クリック(コンテキストメニュー)から実行が可能なクイックアクション形式で作り直したら、問題なく実行されるようになりました。ドラッグ&ドロップというインタフェースでどうも不具合が生じているようです。クイックアクションは Finder や Touch Bar にも登録して実行できるという利点もあります。質問者さんの環境でも不具合が生じるようなら、クイックアクションでの作成を検討してみてはいかがでしょうか。
77
+ [Macでクイックアクション・ワークフローを使用する - Apple サポート](https://support.apple.com/ja-jp/guide/automator/aut73234890a/2.10/mac/11.0)

3

追記

2021/03/22 13:36

投稿

etherbeg
etherbeg

スコア1195

answer CHANGED
@@ -60,6 +60,12 @@
60
60
  以下は補足です。
61
61
 
62
62
  質問中に「Applescriptに慣れておらず」と書かれていますが、シェルスクリプトの間違いかと思います。
63
- AppleScript は macOS に同梱されている、英語に似た構文を持つスクリプト言語で、macOS でのみ実行できるものです。「AppleScriptを実行」アクションを使えば Automater で Applescript を実行することもできますが、参考資料が少なく、構文にもクセのある Applescript を積極的に使う理由はないでしょう。
63
+ AppleScript は macOS に同梱されている、英語に似た構文を持つスクリプト言語で、macOS でのみ実行できるものです。「AppleScriptを実行」アクションを使えば Automator で Applescript を実行することもできますが、参考資料が少なく、構文にもクセのある Applescript を積極的に使う理由はないでしょう。
64
64
 
65
- 「シェルスクリプトを実行」アクションの「シェル」ポップアップメニューで「/usr/bin/python」を選べば、Python スクリプトファイルを別に用意しなくても、アクションのコマンドフィールドに直接、Python スクリプトを記入して実行することができます。ただしこの時に実行される Python は macOS に同梱の Python 2.7 になりますので、この方法で実行できる Python スクリプトは、Python 2.7 と標準ライブラリで実行できるスクリプトになります。
65
+ 「シェルスクリプトを実行」アクションの「シェル」ポップアップメニューで「/usr/bin/python」を選べば、Python スクリプトファイルを別に用意しなくても、アクションのコマンドフィールドに直接、Python スクリプトを記入して実行することができます。ただしこの時に実行される Python は macOS に同梱の Python 2.7 になりますので、この方法で実行できる Python スクリプトは、Python 2.7 と標準ライブラリで実行できるスクリプトになります。
66
+
67
+ ---
68
+
69
+ (追記)
70
+ テスト用に私が作った上記の Automator アプリですが、テストを繰り返していたところ、一度にドラッグ&ドロップしたファイルのうち、一部が処理から漏れたり、ひどい時は全く処理ができなくなったりする不具合が観測されています。少しだけ調査をしてみましたが、原因はわかっていません。I/O が伴う処理なので処理が追いついていないのかと思い、引数をすべてまとめて python 側に渡し、Python 側でループさせてもみましたが、結果は一緒でした。
71
+ 質問者さんの環境とスクリプトで同様の不具合が発生するかどうかはわかりませんが…。念のため追記しておきます。

2

文言の修正

2021/03/22 10:18

投稿

etherbeg
etherbeg

スコア1195

answer CHANGED
@@ -11,7 +11,7 @@
11
11
  echo "$f"
12
12
  done
13
13
  ```
14
- `$@`は引数のすべてを意味します。複数のファイルを同時にドラッグアンロップした場合は、すべてのファイルのフルパスのリストがここに格納されていす。
14
+ `$@`は引数のすべてを意味します。複数のファイルを同時にドラッグドロップした場合は、すべてのファイルのフルパスのリストがここに格納されていす。
15
15
  それに対して for ループを実行していますので、`$f`にはファイルのパスがひとつずつ順番に入ります。
16
16
  上記のシェルスクリプトは以下の Python スクリプトに等しいです。
17
17
 
@@ -42,7 +42,7 @@
42
42
 
43
43
  引数にはフルパスが渡されますので、必要に応じてそこからファイル名やディレクトリ名などを取り出すといいでしょう。
44
44
 
45
- 以下はテストのために私が書いたスクリプトです。ドラッグアンロップしたファイルと同じディレクトリに test.txt というファイルを作って、そこにファイル名とフルパスを書き込んでいます。
45
+ 以下はテストのために私が書いたスクリプトです。ドラッグドロップしたファイルと同じディレクトリに test.txt というファイルを作って、そこにファイル名とフルパスを書き込んでいます。
46
46
 
47
47
  ```python
48
48
  import os

1

文言の追記

2021/03/22 08:29

投稿

etherbeg
etherbeg

スコア1195

answer CHANGED
@@ -36,8 +36,10 @@
36
36
  実行したいバージョンの Python のパスをフルパスで指定するのが安全です。
37
37
  自分で書いたスクリプト(上記では test.py)のパスも、必要であればフルパスで指定してください。上記ではチルダ (~) 展開を使って、ユーザディレクトリ直下にあることを示しました。
38
38
 
39
- 引数は Python では `sys.argv` を使って取得することができます。今回は Python 渡される引数は1つと決まっているので、`sys.argv[1]` で決め打ちで取り出ことができます(sys.argv[0] にはスクリプト自身のパスが入っています)
39
+ > 取得したPathをPythonファイル内の引数設定す引数は1つのです。
40
40
 
41
+ Python では コマンドライン引数は `sys.argv` を使って取得することができます。今回は Python に渡される引数は1つと決まっているので、`sys.argv[1]` で決め打ちで取り出すことができます(sys.argv[0] にはスクリプト自身のパスが入っています)。
42
+
41
43
  引数にはフルパスが渡されますので、必要に応じてそこからファイル名やディレクトリ名などを取り出すといいでしょう。
42
44
 
43
45
  以下はテストのために私が書いたスクリプトです。ドラッグアンドドロップしたファイルと同じディレクトリに test.txt というファイルを作って、そこにファイル名とフルパスを書き込んでいます。