jjzjj

stringio

全部标签

python - 将 StringIO 的内容写入文件的最佳方法是什么?

将StringIO缓冲区的内容写入文件的最佳方法是什么?我目前正在做类似的事情:buf=StringIO()fd=open('file.xml','w')#populatebuffd.write(buf.getvalue())但是buf.getvalue()会复制内容吗? 最佳答案 使用shutil.copyfileobj:withopen('file.xml','w')asfd:buf.seek(0)shutil.copyfileobj(buf,fd)或shutil.copyfileobj(buf,fd,-1)从文件对象复制而不使

python - StringIO 和与 'with' 语句的兼容性(上下文管理器)

我有一些带有遗留函数的遗留代码,该函数将文件名作为参数并处理文件内容。代码的工作副本如下。我想要做的不是为了使用这个遗留函数而将我生成的一些内容写入磁盘,所以我虽然可以使用StringIO创建一个对象来代替物理文件名。但是,这不起作用,如下所示。我认为StringIO是解决这个问题的方法。谁能告诉我是否有办法使用这个遗留函数并在参数中传递一些不是磁盘上的文件但可以被遗留函数处理的东西?旧版函数确实有with上下文管理器对filename参数值进行处理。我在google中遇到的一件事是:http://bugs.python.org/issue1286,但这对我没有帮助...代码fromp

python - 什么时候使用 StringIO,而不是加入字符串列表?

使用StringIO作为字符串缓冲区比使用列表作为缓冲区要慢。什么时候使用StringIO?fromioimportStringIOdefmeth1(string):a=[]foriinrange(100):a.append(string)return''.join(a)defmeth2(string):a=StringIO()foriinrange(100):a.write(string)returna.getvalue()if__name__=='__main__':fromtimeitimportTimerstring="Thisisteststring"print(Timer(

python - 如何清除 stringio 对象?

我创建了一个stringio对象,其中包含一些文本。我想清除其现有值并重用它而不是召回它。有没有办法做到这一点? 最佳答案 TL;DR不必费心清除它,只需创建一个新的——它会更快。方法Python2以下是我如何找到这些东西的方法:>>>fromStringIOimportStringIO>>>dir(StringIO)['__doc__','__init__','__iter__','__module__','close','flush','getvalue','isatty','next','read','readline','r

python - 使用字节而不是字符串的 StringIO 替换?

pythonStringIO类是否有任何替代品,可以使用bytes而不是字符串?这可能不是很明显,但是如果您使用StringIO处理二进制数据,那么您在Python2.7或更高版本上就不走运了。 最佳答案 试试io.BytesIO.作为othershave指出,您确实可以在2.7中使用StringIO,但BytesIO是向前兼容的不错选择。 关于python-使用字节而不是字符串的StringIO替换?,我们在StackOverflow上找到一个类似的问题:

ruby - 为什么 ruby​​ StringIO 不提供不同的编码

为什么在下面的代码中我得到了不同的编码?>>>require'stringio'>>>a=StringIO.new('toto')>>>a.read(2).encoding=>#>>>a.read.encoding=>#>>>a.read.encoding=># 最佳答案 让我们剖析您的代码...a.read(2)这从流中读取两个字节并返回一个String。当您读取特定数量的字节时,Ruby无法保证任何字符边界。因此,它指定返回的字符串将进行二进制编码,即Encoding:ASCII-8BIT。在你的下一行,你正在使用a.read您

ruby - 如何将 StringIO (pdf) 数据保存到文件中

我想用ruby​​保存位于外部远程服务器中的pdf文件。pdf文件在StringIO中。我尝试使用File.write保存数据,但它不起作用。我收到以下错误。ArgumentError:stringcontainsnullbyte现在如何保存? 最佳答案 require'stringio'sio=StringIO.new("he\x00llo")File.open('data.txt','w')do|f|f.puts(sio.read)end$catdata.txthello对评论的回应:好的,试试这个:require'string

ruby-on-rails - Ruby 中 StringIO 的未定义方法 'path'

我在Rails应用程序中使用以下代码段:require'open-uri'url="http://..."uri=URI.parse(self.url)file=open(uri)puts"path:#{file.path}"它适用于来自网络的某些文件,然后在其他文件上崩溃:undefinedmethod`path'for#有什么方法可以解决这个奇怪的间歇性问题? 最佳答案 我肯定迟到了,但是......这个问题的根源在于,如果您在小于10kb的文件上使用open(url),它会自动神奇地将其转换为字符串IO对象,而不是使用Temp

ruby - 有没有办法让 Roo 接受 StringIO 对象来代替文件?

我正在尝试编写一些涉及Roo的单元测试读取Excel2007文件。我的单元测试文件中有Excel文件作为十六进制字符串,它又被输入到StringIO实例中。我不能简单地将StringIO对象传递给Roo::Spreadsheet.open,因为该函数实际上会检查传递的对象是否是File实例:defopen(file,options={})file=File===file?file.path:file#...如果不是,则继续假定它是一个字符串。手动指定扩展名没有帮助:doc=Roo::Spreadsheet.open(file,extension::xlsx)是否有任何巧妙的方法让Roo

ruby-on-rails - 活跃商家 - 未初始化常量 ActiveSupport::XmlMini_REXML::StringIO

我有activemerchant1.16.0和rails3.0.5。我正在尝试构建一个基本代码,以使用活跃的商家与PayPal的网关进行通信。ifcredit_card.valid?#orgateway.purchasetodobothauthorizeandcaptureresponse=gateway.authorize(1000,credit_card,:ip=>"127.0.0.1")ifresponse.success?gateway.capture(1000,response.authorization)puts"Purchasecomplete!"elseputs"Err