1

我正在读取一个包含多个图像的文件夹,这是我读取路径中指定的文件夹的代码部分,

path =  'C:\main\folder\sub-folder\08001\V.1\abc\2015'

for infile in glob.glob( os.path.join(path, '*.tif') ):

    Img = gdal.Open( infile )
    if Img is None:
      print 'Unable to open Input Image'
      sys.exit(1)

...因此代码不起作用,因为它不会读取该文件夹中的任何文件,但也不会引发任何错误。我认为只有当路径中的任何子文件夹的名称以数字值开头时它才起作用。

这里 Path = 'C:\main\folder\sub-folder\08001\V.1\abc\2015' 并且您可以看到它有两个以数值开头的子文件夹(08001 和 2015)。

** 当没有以数值开头的此类子文件夹时,它绝对可以正常工作。

为什么会发生这种情况,我该如何解决?另外,如果提供的原始路径中存在任何子文件夹,我如何自动查看?

当我在命令外壳中查找该路径时,它显示了以下内容。

>>> path =  'C:\P\S\Mo\C\08008\L\V.1R\2015'
>>> path
'C:\\P\\S\\Mo\\C\x008008\\L\\V.1R\x815'
4

1 回答 1

0

您需要转义字符串中的反斜杠:

path =  'C:\\P\\S\\Mo\\C\\08008\\L\\V.1R\\2015'

当其中没有数字时,您的路径有效,这只是巧合。如果您的文件夹路径以abn某些其他字母 开头,它也不起作用。

后跟三个数字的反斜杠被解析为八进制数,其值要插入到字符串中。第一个这样的序列是\0808不是有效的八进制数字,因此 Python 在零之后停止解析八进制。这与\x00您的输出一样以十六进制显示。第二个序列是\201,八进制 201 等于十六进制 81—<code>\x81。

或者,您可以使用原始字符串:

path =  r'C:\P\S\Mo\C\08008\L\V.1R\2015'

字符串之前的r字面量告诉 Python 不要解析字符串中的转义序列。使用 Windows 路径时,这可以使您的路径看起来更好。

第三种可能性是在路径字符串中使用正斜杠而不是反斜杠:

path =  'C:/P/S/Mo/C/08008/L/V.1R/2015'
于 2015-07-28T21:30:07.943 回答