0

Unix ディレクトリ入力を処理し、入力をパラメーターとして使用して別のプログラムを開始する Python 2.7 スクリプトを作成しようとしていました。

ただし、python の str() 関数が入力のスラッシュを好まないという問題に遭遇しました。次のように、入力をスラッシュで str() しようとしているとき:

inputData = str(input('Put directory here:')) // OS is Mac OS X

> Put directory here: /User/username/abc.file
...
SyntaxError: invalid syntax

これは、str() がスラッシュを含む文字列を自然に処理できないためだと思います。入力 (キーボード入力 "/User/username/abc.file") 中に各サイトに手動で引用符を追加すると、このエラーはトリガーされないためです。 .

このスクリプトはユーザー入力を処理する必要があるため、引用符を自動的に追加できることを願っています。次のウォークアラウンドを試しました。

inputDataRaw = input('Put directory here:')
if (not inputDataRaw.startswith('"')) and (not inputDataRaw.startswith("'")):
    inputDataRaw = '"' + inputDataRaw
if (not inputDataRaw.endswith("'")) and (not inputDataRaw.endswith('"')):
    inputDataRaw = inputDataRaw + '"'
inputData = str(inputDataRaw)

しかし、入力値を str() しないと inputDataRaw に格納できないようで、最初の行で同じエラーが直接発​​生しました。Python でスラッシュをエスケープするすべての関数は、最初に文字列を形成しないと機能しないようです。

誰かがこの問題を回避する正しい方法を指摘してくれませんか? ありがとう。

4

2 に答える 2

1

inputeval指定された入力を試みます。つまり、有効な Python リテラル (文字列値の引用符を含む) を想定しています。代わりに使用raw_input- ユーザーが入力した文字列を常に返し、変換はコードに残します。

ドキュメントから:

Equivalent to eval(raw_input(prompt)).

この関数は、ユーザー エラーをキャッチしません。入力が構文的に有効でない場合、SyntaxError が発生します。評価中にエラーが発生した場合は、他の例外が発生する可能性があります。

readline モジュールがロードされている場合、input() はそれを使用して精巧な行編集と履歴機能を提供します。

ユーザーからの一般的な入力には raw_input() 関数の使用を検討してください。

于 2013-11-03T08:29:04.100 に答える
1

問題は、Python コメントを使用していないことです ;-)

変化する:

inputData = str(input('Put directory here:')) // OS is Mac OS X

に:

inputData = str(input('Put directory here:')) # OS is Mac OS X
于 2013-11-03T10:45:49.717 に答える