47

python と argparse を使用すると、ユーザーはフラグとして -d を使用してファイル名を入力できます。

parser.add_argument("-d", "--dmp", default=None)

ただし、パスにスペースが含まれている場合、これは失敗しました。例えば

-d C:\SMTHNG\Name with spaces\MORE\file.csv

注: スペースがあるとエラーが発生します (フラグは入力として 'C:SMTHNG\Name' のみを受け取ります)。

error: unrecognized arguments: with spaces\MORE\file.csv

この問題の解決策を見つけるのに必要以上に時間がかかりました... (Q&A が見つからなかったので、自分の投稿を作成しています)

4

7 に答える 7

36

簡単な解決策: argparse は、引用符でカプセル化されている場合、スペースで満たされた文字列を単一の引数と見なします。

この入力は機能し、問題を「解決」しました。

-d "C:\SMTHNG\Name with spaces\MORE\file.csv"

注意: 引数は "" で囲まれています。

于 2013-08-10T00:09:43.303 に答える
9

今日もこの問題にぶつかりました。

-d "foo bar"

役に立ちませんでした。等号を追加する必要がありました

-d="foo bar"

そして、それはうまくいきました。

于 2016-04-02T17:07:08.303 に答える
2

いくつかの実験 (python 2.7 Win10) の後、ゴールデン ルールは、スペースを含む引数を引用符 ("") で囲み、引数にスペースがない場合は配置しないことであることがわかりました。文字列/パスを渡している場合でも。また、少なくとも Windows では、一重引用符 ('') を使用することはお勧めできません。

小さな例: python script.py --path ....\Some_Folder\ --string "ここに文字列が入ります"

于 2018-02-01T16:18:52.383 に答える