発生している問題・エラーメッセージ
下記のPythonコードを実行すると、SyntaxErrorなるエラーメッセージが表示されます。
Python
1import logging.config 2import os 3import sys 4 5def main(): 6 script_path = os.path.abspath(__file__) 7 basedir = os.path.abspath(os.path.join(os.path.dirname(script_path), os.pardir, os.pardir)) 8 logdir = os.path.join(basedir, 'log') 9 os.makedirs(logdir, exist_ok=True) 10 try: 11 fname = os.path.join(basedir, os.path.pardir, 'lib', 'config.ini') 12 logging.config.fileConfig(fname, defaults={'logdir': logdir}) 13 logging.info('start: {}'.format(script_path)) 14 15 ### 以降の処理(省略) ### 16 17 except Exception as e: 18 logging.exception(e) 19 sys.exit(1) 20 21if __name__ == '__main__': 22 main()
エラーメッセージ
ERROR:root:(unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape (<string>, line 1) Traceback (most recent call last): File "ファイルパス", line (行番号), in main logging.config.fileConfig(fname, defaults={'logdir': logdir}) File "C:\ProgramData\Anaconda3\lib\logging\config.py", line 79, in fileConfig handlers = _install_handlers(cp, formatters) File "C:\ProgramData\Anaconda3\lib\logging\config.py", line 142, in _install_handlers args = eval(args, vars(logging)) File "<string>", line 1 SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape
エラーが発生した箇所は、上記コードでいうと
Python
1logging.config.fileConfig(fname, defaults={'logdir': logdir})
のところです。
試したこと
Windowsだとデフォルトの文字コードがShiftJISになっていることが原因と考え、下記の環境変数を設定
・PYTHONUTF=1
コマンドラインオプション(python -X utf8 ファイルパス)で実行
エラー発生箇所の前に下記のコードを追記
Python
1if os.name == 'nt': 2 import _locale 3 _locale._getdefaultlocale_backup = _locale._getdefaultlocale 4 _locale._getdefaultlocale = (lambda *args: (_locale._getdefaultlocale_backup()[0], 'UTF-8'))
参考:https://blog.tsukumijima.net/article/python3-windows-unicodedecodeerror-hack/
実行環境
Pythonのバージョン:3.7.6
OS:Windows 10
IDE: Visual Studio Code上のターミナルから実行
インストール: PC端末にはAnaconda3をインストールし、Pythonはインストールしていないのですが、condaの仮想環境のパッケージを設定することで、VSCodeから実行できるようにしてあります。
文字コードに関するエラーということはわかるのですが、具体的な原因や解決策がわからないため、詳しい方がいらっしゃいましたら、ご教示いただけると幸いです。
よろしくお願い致します。
回答2件
あなたの回答
tips
プレビュー