gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 10:27:17 25 4
gpt4 key购买 nike

我喜欢在我的 __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 __doc__ 中使用 Windows 文件路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12042748/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com