

下記のサイトに従ってQRコードを作成しようとしたところうまくいきません。原因等おわかりでしたらご教示いただけないでしょうか？  
[【コピペでOK】pythonでQRコードの作り方](https://web-
lh.fromation.co.jp/archives/10000053001)

[code]

    pip install qrcode
    Requirement already satisfied: qrcode in c:\users\user\anaconda3\lib\site-packages (7.3.1)
    Requirement already satisfied: colorama in c:\users\user\anaconda3\lib\site-packages (from qrcode) (0.4.5)
    Note: you may need to restart the kernel to use updated packages.
    ダウンロード
    img = qrcode.make('https://www.google.com/?hl=ja')
    img.save('【C:\Users\user\Desktop\ミーティング】.png')
      File "C:\Users\user\AppData\Local\Temp\ipykernel_440\2780929148.py", line 2
        img.save('【C:\Users\user\Desktop\ミーティング】.png')
                                                     ^
    SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 12-13: truncated \UXXXXXXXX escape
    
[/code]


CC BY-SA 4.0
2023-01-15T15:31:14.973
93361
2023-01-16T01:04:17.443
2023-01-15T23:42:56.080
26370
55769
question
python qr-code
PythonでのQRコードの作成がうまくいかない


ファイル指定のパスが不正です。 (`【 】` が不要)  
以下の様に修正してみてください。

**修正例:**

[code]

    img.save('C:\Users\user\Desktop\ミーティング.png')
    
[/code]


CC BY-SA 4.0
2023-01-15T15:47:21.223
93363
2023-01-15T15:47:21.223
3060
93361
answer


エラーメッセージそのものは`C:\Users`の`\U`がUnicodeの16進数表現の開始に該当するけれどもそれに続く16進数が無いということで、実際に質問記事に書かれた通りのメッセージが表示されたのであれば、これらの記事が該当するでしょう。  
[open関数を使うとエラー (unicode error)
が出てしまいます](https://ja.stackoverflow.com/q/11582/26370)  
[【初心者向け】 SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes
in position 2-3: truncated](https://aiacademy.jp/media/?p=1739)  
[【Python】エラー：unicode error
“unicodeescape”の原因と解決方法](https://office54.net/python/python-unicode-error)  
[読み込みファイルのパス指定で「(unicode error)
'unicodeescape'」が出た時の解決策(WindowsのPython)](https://auto-
worker.com/blog/?p=6622)

* * *

それから参照先記事に以下のように書かれていたからと言って：

>
[code]

>     import qrcode
>  
>     img = qrcode.make('ここにURLなど内容を入力')
>     img.save('【保存場所を入力】.png')
>  
[/code]

保存するファイル名を`'【C:\Users\user\Desktop\ミーティング】.png'`と指定するのは、解説資料を読んで情報を取得することやプログラミングを行うことへのセンスがまだ培われていないと思われます。

ちょっと例示するには揶揄や侮辱が強く入っている感じで不適切かもしれませんがこんなまとめ記事があります。  
[ファイル名を「氏名.docx」にして返信と指示すると「氏名.docx」で返信してくる人が一定数いる](https://togetter.com/li/1951627)

上記コーディング例の`【`,`】`で囲まれた`保存場所を入力`の部分は、そこに保存場所(パス名)を書くのではなく`【`,`】`を含めて`【保存場所を入力】`全体をパス名に置き換えることと読むべきです。  
実際、参照先記事の最後の方に書かれた別の例では以下のように`【`,`】`は入っていません。

>
[code]

>     import qrcode
>  
>     qr =
> qrcode.QRCode(version=1,error_correction=qrcode.constants.ERROR_CORRECT_H,box_size=10,border=6)
>     qr.add_data('株式会社FROMATION')
>     qr.make()
>     img = qr.make_image(fill_color="#000000", back_color="#FF8C00")
>     img.save('sample.png')
>  
[/code]

ただし実際には上記例で`img.save('【sample】.png')`と`【`,`】`が入って書かれていても有効なファイル名ですが、`sample`の部分がファイル名ではなくパス名(ドライブ名やフォルダ名が含まれる)であれば、少なくとも先頭に`【`が付いていてはいけません。

Windowsでのパス名の規約はこちらにあります。  
[ファイル、パス、および名前空間の名前付け](https://learn.microsoft.com/ja-
jp/windows/win32/fileio/naming-a-file)

つまり`img.save('【C:\Users\user\Desktop\ミーティング】.png')`と書いた場合は、`C:\Users\user\Desktop\ミーティング.png`というフルパス名を指定したのではなく、カレント作業フォルダに`【C:\Users\user\Desktop\ミーティング】.png`というファイルを書くことを指定したことになり、上記記事の[命名規則](https://learn.microsoft.com/ja-
jp/windows/win32/fileio/naming-a-file#naming-
conventions)に書かれた予約文字や[完全修飾パスと相対パス](https://learn.microsoft.com/ja-
jp/windows/win32/fileio/naming-a-file#naming-
conventions)の形式に合わないので、冒頭の「`C:\Users`の`\U`がUnicodeの16進数表現の開始に該当する」が無かったとしてもエラーとなった可能性が高いでしょう。

* * *

ということで、上記内容とこんな記事を参考に：  
[【Python】Windowsのパスは、raw文字列で書くと簡単](https://kajiblo.com/python-rawmojiretsu/)

`img.save(r'C:\Users\user\Desktop\ミーティング.png')`または`img.save('C:\\Users\\user\\Desktop\\ミーティング.png')`と書いてください。

なお今回は当てはまらないかもしれませんが、全角文字(のユーザー名含む)、空白、デスクトップ・ダウンロード・システム関連等の特別扱いのフォルダなどはトラブルの基になるので避けた方が良いでしょう。

その意味では別のフォルダ(例えば`C:\Work`)を作成して`img.save(r'C:\Work\Meeting.png')`と出力してみるのが良いと思われます。


CC BY-SA 4.0
2023-01-16T01:04:17.443
93369
2023-01-16T01:04:17.443
26370
93361
answer