Python 3.x 将文件路径(字符串)附加到列表时向路径添加的额外反斜杠

Python 3.x 将文件路径(字符串)附加到列表时向路径添加的额外反斜杠,python-3.x,Python 3.x,我试图在一个文件夹中列出excel文件,这样我就可以按修改日期对它们进行排序,并对每个文件中的数据执行操作。当我试图列出每个文件夹中的文件时,我在每个文件名中都会得到一个额外的反斜杠,我认为这可能会导致问题的出现。删除额外的反斜杠可以解决问题吗?我该怎么做?感谢您的帮助 path = r'C:\Users\...' for dataFolder, expFolder, file in os.walk(path): matches = [] for file_name in fil

我试图在一个文件夹中列出excel文件,这样我就可以按修改日期对它们进行排序,并对每个文件中的数据执行操作。当我试图列出每个文件夹中的文件时,我在每个文件名中都会得到一个额外的反斜杠,我认为这可能会导致问题的出现。删除额外的反斜杠可以解决问题吗?我该怎么做?感谢您的帮助

path = r'C:\Users\...'
for dataFolder, expFolder, file in os.walk(path):
    matches = []
    for file_name in file:
        if file_name.endswith('.xlsx'):
            xlsxExt = os.path.join(dataFolder, file_name)
            matches.append(os.path.normpath((xlsxExt)))
            sortedMatches = matches.sort(key=os.path.getctime)
    print("starting", dataFolder)
    print(expFolder)
    print(file)
    print(xlsxExt)
    print(matches)
    print(sortedMatches)
然后我得到这个作为回报

starting C:\Users\...
[]
['a.ppt', 'b.pzf', 'c.xlsx']
C:\Users...\c.xlsx
['C:\\Users...\\.xlsx']
None

反斜杠没有什么问题-反斜杠文字的python字符串表示形式需要转义为
\\
,而这只表示一个反斜杠字符(使用原始字符串
r“\”
可以避免编写转义斜杠,它是等效的。编辑:Try
len(\\abc”)
len(r“\abc”)
-两者都将返回
4

如果您面临的问题是最后一行打印了
None
,那么这是因为您使用了,它直接对原始列表进行排序,并且不返回任何内容。所以你可以

  • 使用返回一个新的排序列表(这是不同的)
matches=['C:\\Users\\abc.xlsx']
sortedMatches=sorted(匹配项,key=os.path.getctime)
打印(匹配)
打印(分类匹配)
  • 直接排序后,继续使用原始列表
    匹配项
matches=['C:\\Users\\abc.xlsx']
打印(匹配)
matches.sort(key=os.path.getctime)
打印(匹配项)#现在已排序

当您将字符串中的每个反斜杠作为列表的一部分打印时,它会加倍。这是打印的副作用,字符串本身仍然只包含一个反斜杠。感谢您的解释和解决方案!请注意,原始字符串不能以反斜杠结尾,它会导致语法错误。您的
r“\”
示例无效。@MarkRansom Oops,是的,我忘记了-谢谢您指出这一点!我已经编辑了我的答案。