簡體   English   中英

Python,JSON-編寫數據模擬

[英]Python, JSON - writing data simulation

我想創建模擬器,將JSON格式的數據添加到txt文件中,直到我將其關閉。 數據應如下所示:

{user : [
    {
        "ID" : "12"
        "button" : "red"
    },
    {
        "ID" : "11"
        "button" : "red"
    }]
}

這就是我做的:

import json
import random
import time

buttons = ['red', 'green', 'blue', 'yellow']
IDs = ['11', '12', '13', '14', '26', '51', '112', '3']
data = {}  
data['user'] = []  
data['user'].append({  
    'ID': random.choice(IDs),
    'button': random.choice(buttons)
})
with open('data.txt', 'w') as outfile: 

while True:
    data = {}
    data['user'] = []
    data['user'].append({
        'ID': random.choice(IDs),
        'button': random.choice(buttons)
    })
    json.dump(data, outfile)
    time.sleep(1)

第一個問題:當我停止程序時,data.txt文件為空,第二個問題:JSON中的數據看起來不像我以前寫的那樣,但是看起來像這樣:

{user : [
    {
        "ID" : "12"
        "button" : "red"
    }],
{user : [
    {
        "ID" : "11"
        "button" : "red"
    }]
}

我只需要一個標簽用戶。

謝謝。

編輯:也許如果我解釋它是什么會更容易。 它模擬投票,通常在投票開始時人們按下按鈕具有一些選項,可以改變主意,然后再按下不同的按鈕,但是當投票停止時人們仍然可以按下按鈕,並且json文件中的數據已更新,但已更新為數據庫在投票停止之前只會進行選擇。

我希望它會更容易理解我想要做什么。 也許我的想法是錯誤的,我應該考慮一些不同的事情,因為它太復雜了。

JSON中的數據看起來不像我之前寫的

那是因為您在while循環中每次都在創建新字典。 您必須首先構建完整的字典,然后將其寫入文件。

另外,您的while循環沒有退出條件。 它將永遠運行。

第一個問題:停止程序時data.txt文件為空

這是因為python不會直接將其寫入實際文件,而是寫入緩沖區。 有關更多信息,請參見此問題。 直到停止程序,文件才被寫入?

JSON並不是將數據連續追加到文件的最佳選擇,尤其是如果您希望在兩次追加之間將其作為正確的JSON。 每次更新時,您都必須編寫整個字典。 改用CSV。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM