将Twitter API允许你通过他们的媒体添加到您的鸣叫update_with_tweet方法。
我正在使用Sinatra并Twitter设置了所有配置。我能够成功地使用我的应用发布推文。
我的应用程序读取网页,从该页面提取照片,然后应该将它们单独发布到 Twitter。我成功地使用Nokogiri.
但是,我无法将这些照片转换为Twitter允许的媒体类型。因为我也在使用urigem,给出这个例子:photo_url = "placekitten.com/300/300",我可以调用media = open(photo_url),这会返回一个StringIO.
但是,当我尝试将新存储的媒体与我的帖子一起发布给Twitter我时,出现了The IO object for media must respond to to_io (Twitter::Error::UnacceptableIO).
我试图弄清楚如何正确格式化/调用图像,以便我可以成功地将其发布到 Twitter。
我正在尝试为写入套接字的某些通信代码编写一些单元测试。在测试期间,我想将我的通信库写入一个字符串,然后可以将字符串的内容与我希望写入的内容进行比较。
在Java中,我将使用类似a的名称,StringWriter以便我的通信代码可以写入标准Writer接口,最后,我可以只索要所有已写入的数据。
是否有与Perl等效的Python或StringIO?这样的东西已经内置了吗?
我正在尝试用Python制作内存中的zip文件并将其上传到Amazon S3.我已经阅读过关于此事的类似帖子,但无论我尝试什么,Windows和Linux(RHEL5)都无法打开它(它已经损坏).这是我正在运行的代码:
f_redirects = StringIO()
f_links = StringIO()
f_metadata = StringIO()
# Write to the "files"
zip_file = StringIO()
zip = zipfile.ZipFile(zip_file, 'a', zipfile.ZIP_DEFLATED, False)
zip.writestr('redirects.csv', f_redirects.getvalue())
zip.writestr('links.csv', f_bad_links.getvalue())
zip.writestr('metadata.csv', f_metadata.getvalue())
f_redirects.close()
f_links.close()
f_metadata.close()
k = Key(BUCKET)
k.key = '%s.zip' % base_name
k.set_metadata('Content-Type', 'application/zip')
k.set_contents_from_string(zip_file.getvalue())
zip.close()
zip_file.close()
Run Code Online (Sandbox Code Playgroud) 我继承了以下 Django 视图代码,由另一个 Web 服务用于提供可下载版本的输出数据:
def index(request):
# ... (snip) ...
data = base64.decodestring(request.POST['data'])
filename = request.POST['filename']
wrapper = FileWrapper(StringIO(data))
response = HttpResponse(wrapper, content_type=guess_type(str(filename))[0])
response['Content-Length'] = len(data)
response['Content-Disposition'] = "attachment; filename=" + filename
return response
Run Code Online (Sandbox Code Playgroud)
该函数本身(针对 Django 1.0 编写)在升级到 1.5 后仍然可以正常工作。不幸的是,涵盖此视图的测试现在失败了:
def testDownload(self):
self.client.login(username='test', password='test')
real = 'abc' * 100
data = base64.encodestring(real)
response = self.client.post("/api/v1/download/", {'data': data, 'filename': 'out.jpg'})
self.assertEqual(real, response.content)
self.assertEqual(response['Content-Disposition'], 'attachment; filename=out.jpg')
Run Code Online (Sandbox Code Playgroud)
和错误:
Traceback (most recent call last):
File "/home/fred/.secret_projects/final/gerbils/tests/amf.py", line 548, in testDownload
self.assertEqual(real, response.content)
File …Run Code Online (Sandbox Code Playgroud) 所以这是我的程序的第二个问题,但是一个完全不同的问题,感谢有帮助的人建议 JSON 作为做我想做的更好的方法......
反正...
JSON 取得了一些成功。该程序也更改了主题,我绝对不是要制作游戏,只是获得灵感来了解更多有关 python 中“保存”概念的信息。 .. 但我遇到了另一个问题,当我尝试使用 JSON 的 .dump 方法时它报告了这个错误
错误:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "<string>", line 32, in <module>
File "/data/data/com.hipipal.qpy3/files/lib/python3.2/python32.zip/json/__init__.py", line 177, in dump
io.UnsupportedOperation: not writable
Run Code Online (Sandbox Code Playgroud)
代码:
import os
import random
import json
with open("/storage/emulated/0/com.hipipal.qpyplus/scripts3/newgame2.txt") as data_file:
data = json.load(data_file)
save=data
print(save)
hero=dict(save)
print(hero)
level=int(0)
job=str("none")
experience=int(0)
strength=int(0)
intelligence=int(0)
dexterity= int(0)
health= int(0)
magic= int(0)
luck= int(0)
if hero["level"]==0:
level=int(0)
job=str("none")
experience=int(0)
strength=int(0)
intelligence=int(0)
dexterity= …Run Code Online (Sandbox Code Playgroud) 如何最好地将Python中的列表列表转换为(例如)逗号分隔值,换行分隔行,字符串?理想情况下,我可以执行以下操作:
>import csv
>matrix = [["Frodo","Baggins","Hole-in-the-Ground, Shire"],["Sauron", "I forget", "Mordor"]]
> csv_string = csv.generate_string(matrix)
>print(csv_string)
Frodo,Baggins,"Hole-in-the-Ground, Shire"
Sauron,I forget,Mordor
Run Code Online (Sandbox Code Playgroud)
我知道Python有一个CSV模块,如在做题像这样,但是它的所有功能似乎一个文件对象进行操作。列表足够小,以至于使用文件是多余的。
我熟悉的加入功能,并有大量的SO答案吧。但这不会处理包含逗号的值,也不会处理多行,除非我将a嵌套join在另一个行中join。
用户通过表单上传图像文件,我不想将原始上传的图像文件保存到磁盘,并通过Pillow从磁盘打开图像来调整图像大小.
我想首先在内存中调整此映像文件的大小,然后将调整大小的映像文件保存到磁盘.所以我导入StringIO作为缓冲区,但它不适用于Pillow.
这是代码:
Python3.4,Flask == 0.10.1,Pillow == 3.4.2
class Form():
img = FileField()
submit = SubmitField()
Run Code Online (Sandbox Code Playgroud)
from io import StringIO
from PIL import Image
from .forms import Form
@app.route('/upload_img', methods=['GET', 'POST'])
def upload_img():
form = Form()
im = Image.open(StringIO(form.img.data.read())
pass
Run Code Online (Sandbox Code Playgroud)
TypeError:initial_value必须是str或None,而不是字节
我有一个算法可以输出一个元组列表,该列表已准备好写入 csv 文件。
我正在尝试写入 3 个 csv 文件(通过 StringIO,因此不写入磁盘),然后将它们完全压缩。之后,我想将其附加到 django 请求的响应中。
我不确定这样做的最有效方法是什么。我应该StringIO用来通过我的算法存储 3 个调用吗?在压缩它们之前,我应该先创建 csv 文件吗?我可以直接使用 1 zipfilecall 而不需要调用 3 StringIOs的中间步骤吗?
谢谢
我正在尝试使用 RSpec 来测试写入文件的类。但我希望测试速度快,因此我不想使用真实文件并写入磁盘,而是想在测试中使用 StringIO 并写入内存。
以一种非常简单的方式,假设我有这个测试:
RSpec.describe Writer do
it 'replaces the contents of the file' do
file = StringIO.new('foo')
writer = described_class.new(file)
one_contact = [{ 'name' => 'name', 'address' => 'address' }]
writer.write(one_contact)
expect(file.string).to eq('[{"name":"name1","address":"address1"}]')
end
end
Run Code Online (Sandbox Code Playgroud)
假设 writer 类是这样的:
require 'json'
class Writer
def initialize(file)
@file = file
end
def write(contacts)
file.truncate(0)
file.write(contacts.to_json)
file.flush
end
private
attr_reader :file
end
Run Code Online (Sandbox Code Playgroud)
当我通过 Rspec 运行测试时,出现错误:
Failure/Error: file.truncate(0)
IOError:
not opened for writing
Run Code Online (Sandbox Code Playgroud)
如果我更改为其他内容,那么我会在调用truncate的行中收到此错误。writefile
但是,如果我在 pry 中执行此操作,它会起作用:
$ …Run Code Online (Sandbox Code Playgroud) 我正在运行 python 版本 3.6.9 和 pip3 版本 9.0.1。当我执行命令时
pip3 install StringIO
Run Code Online (Sandbox Code Playgroud)
它返回错误
Collecting StringIO
Exception:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/pip/basecommand.py", line 215, in main
status = self.run(options, args)
File "/usr/lib/python3/dist-packages/pip/commands/install.py", line 353, in run
wb.build(autobuilding=True)
File "/usr/lib/python3/dist-packages/pip/wheel.py", line 749, in build
self.requirement_set.prepare_files(self.finder)
File "/usr/lib/python3/dist-packages/pip/req/req_set.py", line 380, in prepare_files
ignore_dependencies=self.ignore_dependencies))
File "/usr/lib/python3/dist-packages/pip/req/req_set.py", line 554, in _prepare_file
require_hashes
File "/usr/lib/python3/dist-packages/pip/req/req_install.py", line 278, in populate_link
self.link = finder.find_requirement(self, upgrade)
File "/usr/lib/python3/dist-packages/pip/index.py", line 465, in find_requirement
all_candidates = self.find_all_candidates(req.name)
File "/usr/lib/python3/dist-packages/pip/index.py", line …Run Code Online (Sandbox Code Playgroud)