为什么我的脚本无法解析子目录中的xml文件?

时间:2019-06-17 12:02:18

标签: python xml parsing elementtree

当我尝试解析子目录中的xml文件时,我得到了$ Username for 'https://github.com': fatal: could not read Username for 'https://github.com': Input/output error 。当我将文件放在脚本旁边时,它可以很好地解析。但是为什么呢?

FileNotFoundError

3 个答案:

答案 0 :(得分:2)

尝试通过打印path_to_file的值来尝试最简单的调试方式。

os.path.join()被使用,因此您不必为其构造的路径指定(特定于操作系统的)路径分隔符,这意味着您无需(不应)指定它们。 / p>

您在test部分上过度指定了路径分隔符-更改:

path_to_file = os.path.join(script_path, '/test', 'file.xml')

path_to_file = os.path.join(script_path, 'test', 'file.xml')

答案 1 :(得分:1)

尝试写'/test'时不要使用反斜杠。

path_to_file = os.path.join(script_path, 'test', 'file.xml')

答案 2 :(得分:0)

我自己发布答案,因为尽管答案可以解决问题,但它们并未给出代码有效而我的代码无效的正确原因。

我的代码的重要问题是,行

path_to_file = os.path.join(script_path, '/test', 'file.xml')
# Expected value of path_to_file:
# /path/to/script/test/file.xml

# Output of print(path_to_file):
# /test/file.xml

包含绝对路径/test,而不是相对路径 ./test,或者如前所述,是更好的方法test。 结果是对于/test,结果路径将不包含script_path的内容。

在您进入一个目录但没有涵盖类似情况的情况下,以前的答案可能会有所帮助

path_to_file = os.path.join(script_path, 'test/subdir', 'file.xml')

/有用的地方。我认为可以信任os.path.join()来照顾那些平台特定的目录。如果您不同意我的话,请告诉我。