关于python 2.7:为什么当我在PATH中有一个以数字值开头的子文件夹时,我的代码为什么不起作用? 您所在的位置:网站首页 一八开头打一个数字 关于python 2.7:为什么当我在PATH中有一个以数字值开头的子文件夹时,我的代码为什么不起作用?

关于python 2.7:为什么当我在PATH中有一个以数字值开头的子文件夹时,我的代码为什么不起作用?

2024-07-10 22:44| 来源: 网络整理| 查看: 265

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

12345678path =  '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',您可以看到它有两个以数值开头的Sub-folder(08001和2015)。

**如果没有以数字值开头的子文件夹,则绝对可以正常工作。

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

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

123>>> path =  'C:\P\S\Mo\C\08008\L\V.1R\2015' >>> path 'C:\\P\\S\\Mo\\C\x008008\\L\\V.1R\x815' 相关讨论 另请参见Python 2.6:"无法打开图像"错误,该错误具有相同的基本问题,但具有非数字路径。

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

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

巧合的是,当路径中没有数字时,它就会起作用。 如果您的路径带有以a,b,n或某些其他字母开头的文件夹,则该路径也不起作用。

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

另外,您可以使用原始字符串:

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

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

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

1path =  'C:/P/S/Mo/C/08008/L/V.1R/2015' 相关讨论 那解决了问题。 非常感谢您提供的信息,可以使您更好地理解! 关于如何也可以读取使用相同gob.glob提供的主路径中的子文件夹的任何想法吗? Google搜索" Python glob.glob递归"时发现了先前的SO问题,即如何在Python中使用glob.glob模块搜索子文件夹?



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有