python - 如何在 Python 中使用 Windows 文件路径 __doc__

标签 python windows filepath docstring

我喜欢在我的 __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

请注意上面的第二行。这是由 main() 内的 print args 命令产生的。据说 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 似乎将这些项目分开。我很困惑。有谁知道这是怎么回事吗?

希望有人能分享一些见解。提前致谢。

最佳答案

尝试删除结尾的反斜杠。更改此:

jmetadata.py "\\Hal\hal free agent 1\backups\videos\" out.txt

对此:

jmetadata.py "\\Hal\hal free agent 1\backups\videos" out.txt

在上面的测试运行中,Python 看到的参数是:

['\\\\Hal\\hal free agent 1\\backups\\videos" out.txt']

尾随退格被解释为转义字符,因为它紧接在 " 之前,这会将您的参数转换为单个字符串(或者直到出现未转义的 "遇到)。

关于python - 如何在 Python 中使用 Windows 文件路径 __doc__,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12042748/

相关文章:

c++ - 如何使用 msvs 包含和设置 brian gladman aes?

python - 迭代或惰性水库采样

c++ - 如何获取当前流程的工作对象(如果有)?

年月的 Windows 环境变量

windows - 如何通过扫描码(不是虚拟键码)获取键状态?

c# - 带双反斜杠的完整路径 (C#)

bash - 使用 Cygwin 设置默认路径

Python 请求使用 ast.literal_eval 错误语法无效?

python - 如何将日志写入文件?

python - 使用 ImageDataGenerator 时,具有 mxnet 后端和 8 个 GPU 的 Keras 训练速度很慢