标签: stringio

如何在 python 中将 sys.stdout 重新附加到控制台窗口?

我的 python 3 涂鸦是这样的:

import io, sys
sys.stdout = io.StringIO()
# no more responses to python terminal funnily enough
Run Code Online (Sandbox Code Playgroud)

我的问题是如何重新连接,以便当我传入时1+1它会返回2到控制台?

这是在 Windows 7 64 位上运行的 32 位 python 上的 python 解释器中。

python io stdout redirectstandardoutput stringio

4
推荐指数
1
解决办法
8988
查看次数

Python 将 StringIO 转换为二进制

我有一个简单的任务:在 luigi 中,使用 dropbox-python sdk 将 Pandas 数据帧作为 csv 存储在 dropbox 中

通常(例如,使用 S3)您可以将 StringIO 用作类似文件的内存中对象。它也适用于熊猫df.to_csv()

不幸的是,dropbox sdk 需要二进制类型,我不知道如何将 StringIO 转换为二进制:

with io.StringIO() as f:
    DF.to_csv(f, index=None)
    self.client.files_upload(f, path=path, mode=wmode)

TypeError: expected request_binary as binary type, got <class '_io.StringIO'>
Run Code Online (Sandbox Code Playgroud)

ByteIO 不适用于df.to_csv()...

python dropbox stringio pandas

4
推荐指数
1
解决办法
3822
查看次数

pysftp putfo 在 SFTP 服务器上创建一个空文件,但不从 StringIO 流式传输内容

我的代码首先将行写入 CSV 中io.StringIO()

fileBuffer = io.StringIO()

# write header
header_writer = csv.DictWriter(fileBuffer, fieldnames=columnNames)
header_writer.writeheader()

# write lines
writer = csv.writer(fileBuffer, delimiter=',') 

for line in data:
            line_dec = line.decode('ISO-8859-1') 
            # print([line_dec])
            writer.writerow([line_dec])
Run Code Online (Sandbox Code Playgroud)

以下代码还打印所有预期行:

$print(fileBuffer.getvalue())    # -> prints all expected rows
Run Code Online (Sandbox Code Playgroud)

我还可以使用 pysftp 成功连接到 SFTP 服务器,甚至在使用 pysftp 时,代码也成功返回所有预期行:

with pysftp.Connection(host, username=user, password=pw, cnopts=cnopts) as sftp: 
            print('sucessfully connected to {} via Port 22'.format(host))
            print(fileBuffer.getvalue())    # -> prints all expected rows
            sftp.putfo(fileBuffer, file2BeSavedAs)   # -> no rows put on FTP Server
Run Code Online (Sandbox Code Playgroud)

实际问题来了: …

python sftp stringio python-3.x pysftp

4
推荐指数
1
解决办法
1176
查看次数

Python cStringIO是线程安全的吗?

正如标题所说,Python cStringIO是否保护其内部结构以供多线程使用?

谢谢.

python thread-safety stringio

3
推荐指数
1
解决办法
1875
查看次数

有没有办法使StringIO读取阻塞

我搜索了文档并搜索过,但没有任何关于阻止StringIO对象的说法.

我可以创建自己的文件类对象,只是简单地包装StringIO但是如何阻止它?我知道的唯一方法是使用while循环和time.sleep(0.1)直到有可用的数据.

python blocking stringio

3
推荐指数
1
解决办法
943
查看次数

应该使用链接调用来支持更明确的分配吗?

我们的团队必须如下所示:

这个:

buf = StringIO.StringIO()
gzip.GzipFile(fileobj=buf, mode='wb').write(foo)
...
Run Code Online (Sandbox Code Playgroud)

还有这个:

buf = StringIO.StringIO()
tmp = gzip.GzipFile(fileobj=buf, mode='wb')
tmp.write(foo)
...
Run Code Online (Sandbox Code Playgroud)

哪一个更pythonic?

编辑:我已经尝试/ catch来做错误处理工作,但哪一个更pythonic?

python stringio python-2.7

3
推荐指数
1
解决办法
90
查看次数

在rails中查找上载文件的内容类型

我正在研究铁轨上的红宝石.我正在尝试做文件附件(图像/音频/视频).

所以我有一个常见的方法

byteArray = StringIO.new(File.open("path").read)
Run Code Online (Sandbox Code Playgroud)

是否可以找到byteArray的内容类型来检查上传的文件是否是ruby中的image/audio/video/pdf.

bytearray paperclip stringio mime-types ruby-on-rails-3

3
推荐指数
1
解决办法
4000
查看次数

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

为什么在下面的代码中我得到不同的编码?

>>> require 'stringio'
>>> a = StringIO.new('toto')
>>> a.read(2).encoding
=> #<Encoding:ASCII-8BIT>
>>> a.read.encoding
=> #<Encoding:UTF-8>
>>> a.read.encoding
=> #<Encoding:ASCII-8BIT>
Run Code Online (Sandbox Code Playgroud)

ruby encoding stringio

3
推荐指数
1
解决办法
828
查看次数

如何使用字符串作为csv阅读器的输入而不将其存储到文件

我试图遍历csv文件中的行。我从网站获取csv文件string。我知道如何创建csv.reader使用with时,数据存储在一个文件中。我不知道的是,如何在csv.reader不存储string到文件的情况下使用行。我正在使用Python 2.7.12。

我试图创建这样的StringIO对象:

from StringIO import StringIO

csv_data = "some_string\nfor_example"
with StringIO(csv_data) as input_file:
    csv_reader = reader(csv_data, delimiter=",", quotechar='"')
Run Code Online (Sandbox Code Playgroud)

但是,我收到此错误:

Traceback (most recent call last):
  File "scraper.py", line 228, in <module>
    with StringIO(csv_data) as input_file:
AttributeError: StringIO instance has no attribute '__exit__'
Run Code Online (Sandbox Code Playgroud)

我知道StringIO该类没有完成此对象的操作__exit__时会调用的方法when

我的答案是如何正确执行此操作?我想可以StringIO通过子类化和添加__exit__方法来更改类,但是我怀疑有更简单的解决方案。

更新:

另外,我尝试了各种不同的组合:

with open(StringIO(csv_data)) as input_file:

with csv_data as input_file: …
Run Code Online (Sandbox Code Playgroud)

python csv stringio

3
推荐指数
1
解决办法
4834
查看次数

如何将'io.StringIO'与'print &gt;&gt;'一起使用?

我收到以下错误:

 Second line.
Traceback (most recent call last):
  File "./main.py", line 8, in <module>
    print >>output, u'Second line.'
TypeError: unicode argument expected, got 'str'
Run Code Online (Sandbox Code Playgroud)

当我运行以下代码时。我不知道怎么了 有人可以教我如何解决它吗?

#!/usr/bin/env python
# vim: set noexpandtab tabstop=2 shiftwidth=2 softtabstop=-1 fileencoding=utf-8:

import io
output = io.StringIO()
output.write(u'First line.\n')
print u'Second line.'
print >>output, u'Second line.'
contents = output.getvalue()
print contents
output.close()
Run Code Online (Sandbox Code Playgroud)

python stringio python-2.7

3
推荐指数
1
解决办法
2214
查看次数