我为此苦苦挣扎了几个小时,虽然我找到了解决方案,但我不喜欢它。有没有内置的方法来解决这个问题:
您在 Windows 上使用包含路径的变量。您正试图用它打开一个文件,但它包含在运行时才能确定的转义字符。
如果您使用“shutil”并执行以下操作:
shutil.copy(file_path, new_file_path)
它工作正常。
但是,如果您尝试使用相同的路径:
f = open(file_path, encoding="utf8")
它不起作用,因为路径中的 '\a' 被读取为 'Bell' = 7
我试过做所有这些,但我唯一能做的就是自定义函数'reconstruct_broken_string'。
file_path = "F:\ScriptsFilePath\addons\import_test.py"
print(sys.getdefaultencoding())
print()
print(file_path.replace('\\', r'\\'))
print( '%r' % (file_path))
print( r'r"' + "'" + file_path+ "'")
print(file_path.encode('unicode-escape'))
print(os.path.normpath(file_path))
print(repr(file_path))
print()
print(reconstruct_broken_string(file_path))
backslash_map = { '\a': r'\a', '\b': r'\b', '\f': r'\f',
'\n': r'\n', '\r': r'\r', '\t': r'\t', '\v': r'\v' }
def reconstruct_broken_string(s):
for key, value in backslash_map.items():
s = s.replace(key, value)
return s
这是打印输出:
utf-8
F:\\ScriptsFilePathddons\\import_test.py
'F:\\ScriptsFilePath\x07ddons\\import_test.py'
r"'F:\ScriptsFilePathddons\import_test.py'
b'F:\\\\ScriptsFilePath\\x07ddons\\\\import_test.py'
F:\ScriptsFilePathddons\import_test.py
'F:\\ScriptsFilePath\x07ddons\\import_test.py'
F:\ScriptsFilePath\addons\import_test.py
有没有内置的方法来做到这一点而不是这个功能?为什么它适用于“shutil”而不是“开放”
谢谢