【发布时间】:2019-04-28 02:36:01
【问题描述】:
我正在尝试识别文件夹中具有特定名称的所有文件。我正在使用标准代码来执行此操作,如下所示:
for paths, subdirs, files in os.walk(start_dir, topdown=True):
for file in files:
print(os.path.join(paths, file))
我的问题是关于这段代码在windows机器上的输出,基本上路径的动态部分有错误的斜杠符号:
D:/JAJA/Projects/DAF/AIM/WEBAPP/trunk/src/main/java/ie/gov/agriculture/aim\aes\AesSheetNumberEntity.java
D:/JAJA/Projects/DAF/AIM/WEBAPP/trunk/src/main/java/ie/gov/agriculture/aim\aes\DocumentReceivedDetailEntity.java
D:/JAJA/Projects/DAF/AIM/WEBAPP/trunk/src/main/java/ie/gov/agriculture/aim\aes\DocumentReceivedEntity.java
D:/JAJA/Projects/DAF/AIM/WEBAPP/trunk/src/main/java/ie/gov/agriculture/aim\aes\DocumentTypeEntity.java
给出的起始文件夹是:
D:/JAJA/Projects/DAF/AIM/WEBAPP/trunk/src/main/java/ie/gov/agriculture/aim
文件夹分隔符是unix one:"/"
虽然 os.walk 函数找到的所有后续子文件夹都有斜线:"\"
所以最后我有无法立即使用的无效路径。这是python os库中的错误还是实际上是什么?
目前我可以很容易地用正确的分隔符替换错误的分隔符,但我想知道这是否是唯一的方法?
【问题讨论】:
-
我以为 Python 标准是
os.sep.join(sequence_to_join)?我猜这里使用os.path可能是导致您的问题的原因 -
路径实际上并没有错,它们可以与斜杠混合使用。两者都是有效的。 Windows 有 两个 路径分隔符,混合使用也没关系。
-
如果您想将路径标准化为单个分隔符,请使用
os.path.normpath()明确执行此操作 -
您的示例似乎混淆了:路径以
D:JAJA开头(没有斜线),这真的是您得到的吗? -
@Joël:假设这是一个简单的“匿名化堆栈溢出发布的字符串”编辑错误。我添加了斜线。
标签: python windows python-os path-separator