python - 如何在不保存本地的情况下操作数据
问题描述
我的目标是从网站访问一些数据并将这些数据放入内存中(不在本地下载),这样我就可以做一些进一步的操作。这是我的python代码:
import pandas as pd
import requests
from requests.auth import HTTPBasicAuth
year = 2019
month_str = 'Jan'
date = 2
month = 1
user = XXXX
password = XXXX
response = requests.get('http_some_url/%i/%s/%02d/%i%02d%02d.gz' % (year,month_str,date,year,month,date), auth = HTTPBasicAuth(user, password))
x = pd.read_csv(response.text, compression='gzip', sep = '|')
print(x.head())
数据位于文件夹“year”=>“month_str”=>“date”中,文件名为“year+month+date.gz”。当我运行此代码时,它返回
"ValueError: embedded null byte".
正确的方法是什么?
更新:
print(response)
<Response [200]>
当我打印响应时,它返回 200,这意味着它有响应。
更新:
response = requests.get('http_some_url/%i/%s/%02d/%i%02d%02d.gz' % (year,month_str,date,year,month,date), auth = HTTPBasicAuth(user, password))
print(response)
x = pd.read_csv(response.content, compression='gzip', sep = '|')
print(x)
在我将 response.text 替换为 response.content 并打印后,它返回:
AttributeError: 'bytes' object has no attribute 'read'
这是该 gzip 文件中的一些示例:
093013399690000|310001|C|A|59.85|73.15|A||
093030000913000|353701|C|A|59.85|73.15|B||
093100000411000|460501|C|A|59.85|73.15|B||
093130000630000|697401|C|A|59.85|73.15|B||
093200000464000|841501|C|A|59.85|73.15|B||
093230000508000|1013801|C|A|59.85|73.15|B||
093300000550000|1148701|C|A|59.85|73.15|B||
093330000394000|1313701|C|A|59.85|73.15|B||
093400000590000|1485801|C|A|59.85|73.15|B||
093430000495000|1652601|C|A|59.85|73.15|B||
093500000593000|1856201|C|A|59.85|73.15|B||
解决方案
看来你的字符串格式是错误的。
f'http_some_url/{year}/{month_str}/{date}/{year}{month}{date}.gz'
推荐阅读
- python - 从较小的样本量中选择随机数
- javascript - 代理内容使用后端
- html - 将emmet表达式扩展为html时错误的重复元素
- amazon-web-services - 需要通配符时的 aws cli rm
- c++ - std:: 在 C++/17 中没有成员“文件系统”
- javascript - querySelector 抛出错误,现在数据格式已更改
- sql - systime 和 YYYY-MM-DD"T"HH24:MI:SS.FFTZH:TZM 之间的区别
- c - 在 main 函数中访问动态数组中的记录时出现分段错误,但在包含的函数中没有
- php - 自从服务器移动后,iOS 上的图像 url 请求,但 android 很好
- android - 由于密码重音,签名 APK 失败?