我喜欢在我的__doc__用法string中给我的用户一个例子。 这是与我的问题有关的代码的重要部分。
# 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 "\Halhal free agent 1backupsvideos" out.txt >
但是,当我将示例复制到命令行时,我预期程序为RUN。 相反,我得到:
>jMetadata.py "\Halhal free agent 1backupsvideos" out.txt ['\\Hal\hal free agent 1\backups\videos" out.txt'] usage: jMetadata.py inDirPath outFilePath example: jMetadata.py "\Halhal free agent 1backupsvideos" out.txt
注意上面的第二行。 这是由main()的print args命令产生的。 这是说,参数列表只有1个元素, ['\\Hal\hal free agent 1\backups\videos" out.txt'] ,而不是2.这对我没有意义。
pythondocstrings不工作?
我通过编写一个windows.cmd文件做了更多的调查。 这是show_args.cmd:
rem show_args.cmd echo %1 echo %2
这是一个运行的结果:
>show_args.cmd "\Halhal free agent 1backupsvideos" out.txt >rem show_args.cmd >echo "\Halhal free agent 1backupsvideos" "\Halhal free agent 1backupsvideos" >echo out.txt out.txt
Windows似乎分开的项目。 我很难过 有人知道这里有什么吗?
我希望有人有一些洞见分享。 提前致谢。
尝试删除尾部的反斜杠。 改变这个:
jMetadata.py "\Halhal free agent 1backupsvideos" out.txt
对此:
jMetadata.py "\Halhal free agent 1backupsvideos" out.txt
在上面的测试中,Python看到的参数是:
['\\Hal\hal free agent 1\backups\videos" out.txt']
后面的退格被解释为一个转义字符,因为它紧挨着一个" ,这将你的参数变成一个单一的字符串(或直到遇到一个未转义的" )。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。