Python 3.x 将文件路径(字符串)附加到列表时向路径添加的额外反斜杠
我试图在一个文件夹中列出excel文件,这样我就可以按修改日期对它们进行排序,并对每个文件中的数据执行操作。当我试图列出每个文件夹中的文件时,我在每个文件名中都会得到一个额外的反斜杠,我认为这可能会导致问题的出现。删除额外的反斜杠可以解决问题吗?我该怎么做?感谢您的帮助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
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“\”
可以避免编写转义斜杠,它是等效的。编辑:Trylen(\\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,是的,我忘记了-谢谢您指出这一点!我已经编辑了我的答案。