我确实检查了一下,但对此没有切中要害的解决方案。
我使用以下方法将特殊字符(括号和空格(替换为前导反斜杠。当我打印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,它不需要转义特殊字符。