使用法の文字列にユーザーの例を示したいと思い__doc__
ます。これが私の質問に関連するコードの重要な部分です。
# jmetadata.py
'''
usage: jmetadata.py inDirPath outFilePath
example: jmetadata.py "\\\\Hal\\hal free agent 1\\backups\\videos\\" out.txt
'''
<...deleted code...>
def forPyWinTests():
jmetadata("\\\\Hal\\hal free agent 1\\backups\\videos\\", "out.txt")
NUM_ARGS = 2
def main():
args = sys.argv[1:]
print args
if len(args) != NUM_ARGS or "-h" in args or "--help" in args:
print __doc__
sys.exit(2)
jmetadata(args[0], args[1])
if __name__ == '__main__':
main()
# print()
# forPyWinTests()
私はこの振る舞いを期待しています:
>jmetadata.py
[]
usage: jmetadata.py inDirPath outFilePath
example: jmetadata.py "\\Hal\hal free agent 1\backups\videos\" out.txt
>
ただし、例をコマンドラインにコピーすると、プログラムが実行されることを期待します。代わりに私は得る:
>jmetadata.py "\\Hal\hal free agent 1\backups\videos\" out.txt
['\\\\Hal\\hal free agent 1\\backups\\videos" out.txt']
usage: jmetadata.py inDirPath outFilePath
example: jmetadata.py "\\Hal\hal free agent 1\backups\videos\" out.txt
上記の2行目に注意してください。print args
これは、内のコマンドの結果main()
です。argsリスト['\\\\Hal\\hal free agent 1\\backups\\videos" out.txt']
には2つではなく1つの要素しかないと言っています。これは私には意味がありません。
Windowsの.cmdファイルを作成して、もう少し調査を行いました。次にshow_args.cmdを示します。
rem show_args.cmd
echo %1
echo %2
実行の結果は次のとおりです。
>show_args.cmd "\\Hal\hal free agent 1\backups\videos\" out.txt
>rem show_args.cmd
>echo "\\Hal\hal free agent 1\backups\videos\"
"\\Hal\hal free agent 1\backups\videos\"
>echo out.txt
out.txt
Windowsはアイテムを分離しているようです。私は困惑しています。誰かがここで何が起こっているのか知っていますか?
誰かが共有する洞察を持っていることを願っています。前もって感謝します。