__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
注意上面的第二行。这是由print args
里面的命令产生的main()
。它是说 args 列表只有 1 个元素,['\\\\Hal\\hal free agent 1\\backups\\videos" out.txt']
而不是 2。这对我来说没有意义。
我通过编写一个 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 似乎将这些项目分开。我难住了。有谁知道这里发生了什么?
我希望有人有一些见解可以分享。提前致谢。