0

Python スクリプトで、テキスト ファイルの文字をキーストロークとして OSX に渡すようにしようとしています。テキスト ファイルは、文字の列としてフォーマットされます。

リスト(行と呼ばれる)に読み込まれているもの。このビットは機能しているようです。たとえば、lines[3] と入力すると、3 番目の文字が期待どおりに出力されます。

私は今、applescript を使用して、この文字をキーストロークとして OSX に渡そうとしています。

import os 
for f in xrange ( VALUE ):
osascript -e 'tell application "System Events" to keystroke linesf]'

list[f] 部分については満足していないようです (構文エラー、carat は最後のアポストロフィの下にあります)。何らかの理由で変数 f がこのコマンドで使用できないためだと思われますが、確かではありません。誰でもアドバイスをいただけますか?for ループのビットをインデントする必要があることはわかっていますが、このダイアログでは何らかの理由でインデントできません。私がテストしているスクリプトでは正しいです。

少し早いですがお礼を。

編集:

それらはタイプミスでした。リストではなく行である必要があり、コロンが必要であり、インデントされている必要があります。これをすべて修正した後、同じ結果が得られました。リストを繰り返し処理することはできません。これは for ループの抜粋にすぎません。残りが機能するには、このように構造化する必要があります。

osascript で始まる行を修正するにはどうすればよいですか?

ちなみに、この質問から受け入れられた回答を編集することでこれを取得しました: Is there a sendKey for Mac in Python?

4

1 に答える 1

2

不満なのは、Python プログラム内でコマンド ライン命令を使用しようとしたことです。Python は、からosascript -e 'tell application "System Events" to keystroke list[f]'減算する必要があることを認識して認識しますが、文字列 をどう処理すればよいかわかりません。eosascript'tell application "System Events" to keystroke list[f]'

ここで間違っていることがたくさんあります。まず、投稿したコードは実際に持っているものではない可能性があります。なぜなら、forループからコロンが欠落しており (代わりにそれについて不平を言っているはずです)、forループ内に入るコードをインデントしていないからです。 . 次に、コマンドライン命令osに使用するために必要だと思われる をインポートしました。第 3 に、実際のリスト クラスで名前が既に使用されているため、os.systemlist を呼び出すべきではありません(たとえば、 list を作成するようなことができるため、これは便利なものです)。4番目に、リスト内の各項目をループしたい場合は、実際にそれを行います. 5番目に、次のような文字列を書くとlistlistlist('foobar')['f', 'o', 'o', 'b', 'a', 'r']"keystroke x[y]"の場合、変数xand y(存在すると仮定) は無関係です: 文字列に実際の文字'x'and 'y'(およびいくつかの角括弧) を含めるように要求しました。リストから適切な文字を含む文字列を実際に作成する必要があります。

于 2014-08-14T14:39:52.867 に答える