2

ターミナルから実行すると、Pythonスクリプトが完全に機能します。しかし、automator を実行しようとすると、「Run Shell Script」エラーが発生します。

目標: (気をつけて、ここで noob を完了してください。したがって、'noob' タスクです) 私の日常の仕事 (異なる分野) では、常に Windows と Mac の両方で人々と協力しています。私はMacを使用しているので、右クリックドロップダウンサービスをすばやく作成してファイルパスを取得しようとしています> /を見つけ、\に置き換え、サーバーパスの先頭の違いをクリップボードにコピーします. このようにして、クリックして貼り付けるだけで、誰かに Windows バージョンのパスを提供できます。スクリプティング 101 確かに。

ターミナルを介して私の.pyドキュメントでそれはすべて素晴らしいです...明らかに、これまでのところ見栄えの良いドキュメントのパスを教えてくれます。このことを動員するには、Automator が最適な方法だと聞きました。

セットアップ時に指定されたエラーが発生します: Run Shell Script Shell: /usr/bin/python Pass Input: as arguments. コード:

import os

def replace_all(text, dic):
    for i, j in dic.iteritems():
        text = text.replace(i, j)
    return text

userlink = os.path.realpath(__file__)

reps = {'/':'\\','///':'\\', 'rr1mgsfile46':'gameshare\\share\\IEBDesign','smb:':''}

txt = replace_all(userlink, reps)


cmd = 'echo %r | tr -d "\n" | pbcopy' % txt
os.system(cmd)

また、Shell: /bin/bash を使用して、それを .py に転送しようとしただけでも、同じ結果が得られました。ここには推測作業がたくさんあるので、これが間違っているとしか想像できません。しかし、それは端末で動作するので、私はあまりにも遠く離れることはできないと感じています.

すべてのヘルプは大歓迎です。

4

1 に答える 1

1

詳細は省きますが、これは Snow Leopard でうまくいきました。Finder の「Ask for Finder Item」ダイアログを前面に配置すると、テストできます。

import sys
import os

def replace_all(text, dic):
    for i, j in dic.iteritems():
        text = text.replace(i, j)
    return text

for userlink in sys.argv[1:]:
    # print('pbcopy ' + userlink) # this is for testing
    os.system('pbcopy ' + f)
    reps = {'/':'\\','///':'\\', 'rr1mgsfile46':'gameshare\\share\\IEBDesign','smb:':''}
    txt = replace_all(userlink, reps)

    cmd = 'echo %r | tr -d "\n" | pbcopy' % txt
    os.system(cmd)
于 2013-09-12T01:29:12.247 に答える