質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1720閲覧

csvファイルへの書き込みができない

yal

総合スコア41

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/05/19 21:23

前提・実現したいこと

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jbpb0

2021/05/19 22:47

https://teratail.com/questions/151952 では、質問のコードを他人がコピペしたら、現象が再現されなかった、とのこと 全く新規の中身が空のファイルを作り、そのファイルにこの質問からコードをコピペしてみたら、いかがでしょうか? ファイルからファイルへのコピペではなく、teratail.comの画面からのコピペです
jbpb0

2021/05/19 23:03 編集

> エラー 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行目を調べたら、何か分かるかも
itagagaki

2021/05/20 00:35

私の環境にはnfcモジュールが無いので、 #import nfc #clf = nfc.ContactlessFrontend('usb') #clf.close() とコメントアウトして tag = 'Type2Tag ID=D6F282A6'; に書き換えて実行してみたら、エラーは出ませんでした。 ということは tag が怪しいかもしれませんね。
yal

2021/05/20 06:23

どちらとも試して解決しました.ありがとうございました. とても参考になりました.
guest

回答1

0

自己解決

visual studioの初期設定で字下げは空白4文字で統一されており,
teratailからのコピーでもエラーは発生しました.
参考からnfcモジュールの部分をコメントにしましたがエラーは発生しました.
しかし,エラーを無視してデバックすると正常に作動しました.
本当にありがとうございました.

投稿2021/05/20 06:31

yal

総合スコア41

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jbpb0

2021/05/20 09:40

> エラーを無視してデバックすると正常に作動しました. 具体的に、何をしたら直ったのでしょうか? ・ここの質問からコードを新規ファイルにコピペしてもダメ ・インデントは全てスペースのみ (タブは使ってない) ・nfcモジュール関連を全てコメントアウトしてもダメ だったのですよね? 同様なエラーに悩む人が検索でここにたどり着いた時に、どのようにしたら直るのかがわかるように書いておいた方が、いいと思います
yal

2021/05/23 13:33

上記の原因はvisual studioの構文チェックがいけないのだと思います。 なのでエラーを無視して起動するか、Anacondaなどの開発環境にしてみると解決するっぽいです。 詳しくはわかりませんでした...
jbpb0

2021/05/23 14:46

VS Codeを使わずにPythonを単独で起動してコードを実行したら、この質問のエラーは発生せず正常に実行できた、ということですか?
yal

2021/05/23 17:09

そのとおりです.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問