【问题标题】:I want to save python variable result to a file [duplicate]我想将python变量结果保存到文件中[重复]
【发布时间】:2016-11-09 06:25:35
【问题描述】:

当这个文件运行时给出相应的输出值;

# test BLE Scanning software
# jcs 6/8/2014


import MySQLdb as my
import blescan
import sys


import bluetooth._bluetooth as bluez

dev_id = 0

db = my.connect(host="localhost",
user="root",
passwd="root",
db="test"
)

cursor = db.cursor()

try:
    sock = bluez.hci_open_dev(dev_id)
    print "ble thread started"

except:
    print "error accessing bluetooth device..."
        sys.exit(1)

blescan.hci_le_set_scan_parameters(sock)
blescan.hci_enable_le_scan(sock)




while True:
    returnedList = blescan.parse_events(sock, 10)
    print "----------"
    for beacon in returnedList:

        print beacon


sql = "insert into beacon VALUES(null, '%s')" % \
(beacon)

number_of_rows = cursor.execute(sql)
db.commit()

db.close()

我希望将输出存储在文本文件中

cf:68:cc:c7:33:10,b9407f30f5f8466eaff925556b57fe6d,13072,52423,-74,-78
cf:68:cc:c7:33:10,74696d6f74650e160a181033c7cc68cf,46608,13255,-52,-77
da:f4:2e:a0:70:b1,b9407f30f5f8466eaff925556b57fe6d,28849,11936,-74,-79
da:f4:2e:a0:70:b1,74696d6f74650e160a18b170a02ef4da,46769,28832,46,-78
dd:5d:d3:35:09:dd,8aefb0316c32486f825be26fa193487d,1,1,-64,-78
c3:11:48:9b:cf:fa,8aefb0316c32486f825be26fa193487d,0,0,-64,-73
fd:5b:12:7f:02:e4,b9407f30f5f8466eaff925556b57fe6d,740,4735,-74,-79
fd:5b:12:7f:02:e4,74696d6f74650e160a18e4027f125bfd,46820,639,18,-80
dd:5d:d3:35:09:dd,8aefb0316c32486f825be26fa193487d,1,1,-64,-77

等等...然后将这些值写入文本文件中。对于文本文件,是否可以生成文本文件作为脚本的一部分?谢谢

【问题讨论】:

  • Yes! 你的信标是一个简单的列表吗?
  • 是的,我想将 iBeacon MAC 地址 iBeacon UDID iBeacon Major Number iBeacon Minor Number TX Power at 1m 结果保存到 mysql 数据库中

标签: python file


【解决方案1】:

如果您想要将数据存储在文件中,以便稍后打开它,最简单的方法是使用Pickle(或cPickle)模块 类似:

import cPickle

#store the data in file

with open('/path/to/file.txt', 'wb') as f:
    cPickle.dump(returnedList, f)

#to read the data

loaded_returnedList = cPickle.load(open('/path/to/file.txt'))

 print loaded_returnedList == returnedList # Prints True

现在,如果您想要存储可视化存储的数据(可能稍后在 excel 中打开),csv 模块适合您

import csv

with open('/path/to/file', 'w') as f:
    writer = csv.writer(f)

    for beacon in returnedList:
        writer.writerow(beacon)

【讨论】:

  • 它给了我一个 writer = csv.writer(f) 期望一个缩进块
  • 您可能会在开头没有 4 个空格的情况下应对它。记住在 python 缩进中它真的很重要。
【解决方案2】:

为你的循环试试这个

while True:
    returnedList = blescan.parse_events(sock, 10)
    print "----------"
    f = open('bluez.txt', 'a+')
    for beacon in returnedList:
        print beacon
        f.write(','.join(beacon)+'\n')
    f.close()

编辑:现在追加模式

【讨论】:

  • 您确定要在每次通过 while 循环时都覆盖文件吗?
  • 不覆盖,我想追加结果
  • 是否可以将这些值保存在 mysql 数据库表中?
  • 如果要保存到mysql,可以看看sqlalchemy模块
猜你喜欢
  • 2013-03-23
  • 2019-12-25
  • 2013-02-15
  • 1970-01-01
  • 1970-01-01
  • 2018-10-20
  • 2014-05-25
  • 1970-01-01
  • 2021-03-07
相关资源
最近更新 更多