1

私はプログラムへの入力を受け入れるためにargparseモジュールを使用してきましたが、多くの成功を収めています。約6つのオプションの引数(-を前に付ける必要のある引数はリスト内のどこにでも配置できます)と1つの位置引数(引数を決定するために配置された順序を使用する必須の引数)を定義したので、使用状況チャートは次のようになります。これ(簡潔にするために追加のオプションの引数を削除):

usage: Main.py [-h] [--site SITE] [--username USERNAME] [--password PASSWORD]
           [--verbose]
           filepath

Debian(Python 2.6に付属)でPython 2.7スクリプトを実行するために、私はpythonbrewを使用して成功しました。これにより、複数のPythonインストールを同じサーバーに共存させることができます。これを使用することの良い副作用は、スクリプトの実行可能アクセス許可をオフにできることを意味します。これにより、ユーザー管理がはるかに簡単になります。

スペースのあるファイルパス(私の唯一の位置引数)に格納しようとするまで、すべてが順調でしたが、できなかったことがわかりました。

pythonbrew py Main.py --verbose /media/rackspace/db1/clients/My\ Client/
pythonbrew py Main.py --verbose '/media/rackspace/db1/clients/My\ Client/'
pythonbrew py Main.py --verbose "/media/rackspace/db1/clients/My\ Client/"
pythonbrew py Main.py --verbose [/media/rackspace/db1/clients/My\ Client/]

pythonbrew py Main.py --verbose /media/rackspace/db1/clients/My Client/
pythonbrew py Main.py --verbose '/media/rackspace/db1/clients/My Client/'
pythonbrew py Main.py --verbose "/media/rackspace/db1/clients/My Client/"
pythonbrew py Main.py --verbose [/media/rackspace/db1/clients/My Client/]

すべて同じエラーメッセージを返します

Main.py: error: unrecognized arguments: Client

誰かがこのエラーを確認できますか?Pythonグループでまだ誰も言及していないという事実から、これはPythonbrewのバグであると私は信じていますが、Pythonbrewを維持し、このスクリプトを実行する別の方法を見つけたいと思っています。今のところ、スペースのないフォルダにファイルを保存しているだけですが、誰かがこのエラーを解決してくれることを願っています。

4

2 に答える 2

2

問題はにありpythonbrew/commands/py.pyます。の各呼び出しsubprocess.Popen()は、文字列ではなくコマンドのリストを使用するように変更する必要があります。

于 2011-06-27T16:20:18.163 に答える
1

私は新しすぎるのでコメントを投稿できませんが、スペースの前に\を付けて、スペースから脱出しようとしましたか?多分次のようなもの:

pythonbrew py Main.py --verbose /media/rackspace/db1/clients/My\ Client/

于 2011-06-27T16:13:13.190 に答える