替换了文件名中的特殊字符.现在 os.stat 失败了,因为它们有双反斜杠



我确实检查了一下,但对此没有切中要害的解决方案。

我使用以下方法将特殊字符(括号和空格(替换为前导反斜杠。当我打印f时,它显示正确的输出(文件名有反斜杠(,但是当我os.stat命令中使用相同的f变量时,我收到文件名不存在的错误。未找到的文件具有双反斜杠。

for ch in ['(',')',' ']:
        f = f.replace(ch,"\"+ch)
print(f)
stat.S_IMODE(os.stat(f).st_mode)

输出(如果f是"我的文件(1(.txt"(:

my file(1).txt
OSError: [Errno 2] No such file or directory: 'my\ file\(1\).txt'

您是否尝试过 os.stat(f(.st_mode 而没有转义 f 中的特殊字符?

这对我有用:

import os, re
f = "my file(1).txt"
print os.stat(f).st_mode

如果你想转义任何特殊字符,你可以使用

import re 
x = re.escape("my file(1).txt")

对于 os.stat,它不需要转义特殊字符。

最新更新