python - 写入 CSV 时跳过行
问题描述
我编写了一个从 2 个单独的 API 收集数据的脚本,但我无法将其全部显示在一行上,而是显示如下:
Device Status Model StatusSub
d8d Online
122 Disconnected
当我希望它看起来像这样时;
Device Status Model StatusSub
d8d Online 1202 Disconnected
这是我的代码,API 受密码保护,因此您将无法直接运行它:
while True:#always run
if datetime.datetime.now().minute % 15 == 0 or True:#once every 15 minutes
name = [('Device'), ('Status'), ('Model'), ('StatusSub')]
space = [(''),('')]
print (datetime.datetime.now())
today = datetime.date.today().strftime('E.Subdevice.Logs.%m-%d-%Y')#file name
if os.path.exists(today + '.csv'):#Create new file if its a new day
Append_write = 'ab'
else:
Append_write = 'wb'
with open(today + '.csv',Append_write) as myFile:#open todays csv file, set to write.
writer = csv.writer(myFile)
writer.writerow(name)
writer.writerow(space)
#Loop to collect device name and status 500 at a time and print all 2080 in the file specified above.
for x in range(5):
string1 = "https://api.raincloud.com/rest/device?networkName=Company&take=500&skip="+str(x*500)
response = requests.get(string1,headers=headers).json()
for y in range (len(response)):
myData = [(response[y]['device']),(response[y]['status'])]
string2= 'https://api.raincloud.com/rest/device/'+str(myData[0])+'/subdevice'
response2 = requests.get(string2,headers=headers).json()
for z in range (len(response2)):
myData2 = [(response2[z]['model']),(response2[z]['status']),datetime.datetime.now()]
writer.writerow(myData)
writer.writerow(myData2)
任何帮助表示赞赏。
解决方案
我认为修复很简单,只需更改即可
writer.writerow(myData)
writer.writerow(myData2)
至
writer.writerow(myData + myData2)
每次调用该writerow
函数时,它都会写入一个新行。但是,如果您想将所有信息写入一行,则需要在一次writerow
调用中执行它。因此,将您的两个列表合并为一个列表并调用writerow
该列表
这段代码虽然有点令人担忧
for z in range (len(response2)):
myData2 = [(response2[z]['model']),(response2[z]['status']),datetime.datetime.now()]
这是循环遍历作为第二个响应的 json 主体的数组,但myData2
每次都会覆盖。因此myData2
,只会等于您响应的最后一个模型和状态。
您的 CSV 中也没有时间戳列,但您正在添加时间myData2
并将其写入 CSV。
推荐阅读
- reactjs - 更好的连续调度方法?
- java - 为什么进入全屏时在 JFrame 中设置首选尺寸会失败?
- node.js - 将数据流式传输到 gzip 文件会因“JavaScript 堆内存不足”(NodeJS)而崩溃
- rust - 为什么 Rust HTTP 库将请求和响应主体都实现为可读取的内容?
- python - 如何将此 JSON 时间序列数据放入 pandas 数据框中?
- rotation - 查找从一个 3D 点到另一个 3D 点的旋转和平移
- c# - 找出我的 C# 代码正在调用的 SQL 上正在运行的进程
- javascript - 更改 JSON 对象格式
- ruby-on-rails - 有没有办法将 id 发送到 rails 中的两个操作?
- java - Spring Boot with Hibernate:在已经存在时继续创建数据库