前提・実現したいこと
Pythonを使ってnfcのログをcsvに残したいです.
少しずつ書き増していたのですが,csvに記録を書き込む点で
どうやってもエラーが止まりません.
関数のwriteCSVの部分をコメントアウトすれば正常に動くので
そこが悪いと考えていますがそれ以上に分かりません.
字下げも大丈夫だと思います.
発生している問題・エラーメッセージ
重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態 エラー unexpected token '<dedent>' py1 D:\prog\py\py1\py1.py 29 エラー unexpected token 'open' py1 D:\prog\py\py1\py1.py 11 エラー can't assign to literal py1 D:\prog\py\py1\py1.py 11 エラー unexpected token '=' py1 D:\prog\py\py1\py1.py 11 エラー unexpected token ')' py1 D:\prog\py\py1\py1.py 11 エラー unexpected token 'f' py1 D:\prog\py\py1\py1.py 11 エラー unexpected token ':' py1 D:\prog\py\py1\py1.py 11 エラー unexpected indent py1 D:\prog\py\py1\py1.py 12 エラー can't assign to ErrorExpression py1 D:\prog\py\py1\py1.py 12 エラー unexpected token '<dedent>' py1 D:\prog\py\py1\py1.py 14 エラー unexpected token 'if' py1 D:\prog\py\py1\py1.py 15 エラー unexpected token ':' py1 D:\prog\py\py1\py1.py 15 エラー unexpected indent py1 D:\prog\py\py1\py1.py 16 エラー can't assign to ErrorExpression py1 D:\prog\py\py1\py1.py 16
該当のソースコード
# coding: utf-8 import nfc import os import datetime import time import csv def writeCSV(x,y,z,t): with open('eem.csv','a',newline='') as f: writer = csv.writer(f) writer.writerow([x,y,str(z).replace('Type2Tag ID=',''),t.strftime("%Y/%m/%d %H:%M:%S")]) if __name__ == '__main__': userDic ={'Type2Tag ID=D6F282A6':'tokyo taro'} numDic = {'Type2Tag ID=D6F282A6':'33333'} while True: clf = nfc.ContactlessFrontend('usb') try: tag = clf.connect(rdwr={'on-connect': lambda tag: False}) name = userDic[str(tag)] num = numDic[str(tag)] dt_now = datetime.datetime.now() writeCSV(name,num,tag,dt_now) print(name,num,str(tag).replace('Type2Tag ID=',''),dt_now.strftime("%Y/%m/%d %H:%M:%S")) finally: clf.close() time.sleep(5)
試したこと
コメントアウトでwriteCSVが原因だと考えています.
writeCSVの中身を本文にいれても同じようにエラーを吐きます.
字下げもwriteCSV部分を確認しましたが,空白4文字分でした.
補足情報(FW/ツールのバージョンなど)
Python3.9(64-bit)
visual studio 2019
https://teratail.com/questions/151952
では、質問のコードを他人がコピペしたら、現象が再現されなかった、とのこと
全く新規の中身が空のファイルを作り、そのファイルにこの質問からコードをコピペしてみたら、いかがでしょうか?
ファイルからファイルへのコピペではなく、teratail.comの画面からのコピペです
https://stackoverflow.com/questions/62602519/python-unexpected-token-newlinededent
によると、インデントにタブとスペースを両方使ってると、そのようなエラーが出るようです
> 字下げもwriteCSV部分を確認しましたが,空白4文字分でした.
タブ使ってるところは全くありませんでしょうか?
> エラー unexpected token '<dedent>' py1 D:\prog\py\py1\py1.py 29
> エラー unexpected indent py1 D:\prog\py\py1\py1.py 12
> エラー unexpected token '<dedent>' py1 D:\prog\py\py1\py1.py 14
> エラー unexpected indent py1 D:\prog\py\py1\py1.py 16
上記のエラーの行、12, 14, 16, 29行目を調べたら、何か分かるかも
私の環境にはnfcモジュールが無いので、
#import nfc
#clf = nfc.ContactlessFrontend('usb')
#clf.close()
とコメントアウトして
tag = 'Type2Tag ID=D6F282A6';
に書き換えて実行してみたら、エラーは出ませんでした。
ということは tag が怪しいかもしれませんね。
どちらとも試して解決しました.ありがとうございました.
とても参考になりました.
回答1件
あなたの回答
tips
プレビュー