95836


IoTデバイスへ以下のようなCSVデータを格納し、

[code]

    'datetime', 'people', 'week', 'temperature', 'weather', 'precipitation', 'snowfall', 'snowcover', 'wind', 'humidity', 'holiday', 'vacation', 'event', 'eventtime', 'holidays', 'covid'
    '2021/09/02 18:56:00', '36', '木', '23.8', '曇', '0', '0', '0', '3.3', '80', 'なし', 'なし', 'なし', 'なし', '0', '1'
    '2021/09/02 18:57:00', '33', '木', '23.8', '曇', '0', '0', '0', '3.3', '80', 'なし', 'なし', 'なし', 'なし', '0', '1'
    '2021/09/02 18:58:00', '33', '木', '23.8', '曇', '0', '0', '0', '3.3', '80', 'なし', 'なし', 'なし', 'なし', '0', '1'
    
[/code]

txtファイルへ書き出しをしたいと考えています。

以下のpythonコードを作成しています。

[code]

    # test.py
    
    import csv
    import sys
    from pathlib import Path
    home_path = str(Path.home())
    print (open((home_path + '/Desktop/text書き出し.txt'), 'a'))
    
    filename = '20210902.csv'
    with open(filename, encoding='cp932', newline='') as f:
        csvreader = csv.reader(f)
        for row in csvreader:
            print(row)
    
    a_text = ""
    for a in ():
        a_text += a
        a_text += "\n\n"
    
    desktop = str(Path.home()) + "\Desktop"
    a_file = open(Path(desktop +"text書き出し.txt"),"w")
    a_file.writelines(a_text.rstrip())
    a_file.close()
    
[/code]

上記を実行すると、ターミナルにCSVデータの中身が出力され、  
ファイルがない場合は作成はされますが、  
中身は空の状態になってしまいます。  
また、同名のtxtファイルがある場合はターミナル上にCSVデータの  
中身が出力されるのみです。

どのように書き換えたら、txtファイルへCSVファイルの中身を  
出力できますでしょうか。


CC BY-SA 4.0
2023-08-03T06:32:55.033
95835
2023-08-03T11:18:18.917
2023-08-03T07:19:39.767
59069
59069
question
python csv
IoTデバイスにCSVデータを格納後、別ファイルに変換したい


全く同じ内容(を出力したい) ということであれば以下のようにできます

[code]

    import io
    csvfile = '''
    'datetime', 'people', 'week', 'temperature', 'weather', 'precipitation', 'snowfall', 'snowcover', 'wind', 'humidity', 'holiday', 'vacation', 'event', 'eventtime', 'holidays', 'covid'
    '2021/09/02 18:56:00', '36', '木', '23.8', '曇', '0', '0', '0', '3.3', '80', 'なし', 'なし', 'なし', 'なし', '0', '1'
    '2021/09/02 18:57:00', '33', '木', '23.8', '曇', '0', '0', '0', '3.3', '80', 'なし', 'なし', 'なし', 'なし', '0', '1'
    '2021/09/02 18:58:00', '33', '木', '23.8', '曇', '0', '0', '0', '3.3', '80', 'なし', 'なし', 'なし', 'なし', '0', '1'
    '''
    
    import csv
    import sys
    from pathlib import Path
    
    with io.StringIO(csvfile.strip()) as f:
        csvreader = csv.reader(f)
        for row in csvreader:
            print(row)
    
        desktop = Path.home() / "Desktop"
        with open(desktop / "text書き出し.txt", "w") as a_file:
            f.seek(0)
            for ln in f:
                a_file.write(ln)
    
[/code]

* * *

#### (update)

`a_text`へ str型として蓄え, 出力するなら

[code]

    with open( 〜 ) as f:
        csvreader = csv.reader(f)
        for row in csvreader:
            print(row)
    
        f.seek(0)
        a_text = f.read()
    
    desktop = Path.home() / "Desktop"
    with open(desktop / "text書き出し.txt", "w") as a_file:
        a_file.write(a_text)
    
[/code]

行のリストとして
([`writelines()`](https://docs.python.org/ja/3/library/io.html#io.IOBase.writelines)
で) 扱いたいのであれば, それを読み込む際に
[`readlines()`](https://docs.python.org/ja/3/library/io.html#io.IOBase.readlines)
を使用するかもしくは **データを加工** する必要がある

(`write` に対するのは `read` であり, `writelines` に対するのは `readlines`)


CC BY-SA 4.0
2023-08-03T07:33:55.370
95836
2023-08-03T11:18:18.917
2023-08-03T11:18:18.917
43025
43025
95835
answer