私はこれに何時間も苦労してきましたが、解決策を見つけましたが、好きではありません。これを解決する組み込みの方法はありますか:
パスを含む変数を使用して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
この関数ではなく、これを行う組み込みの方法はありますか? 「open」ではなく「shutil」で機能するのはなぜですか
ありがとう