如何将 iostream 的输出写入缓冲区,python3
how to write the output of iostream to buffer, python3
我有一个程序可以从 cli sys.argv[] 读取数据,然后将其写入文件。
我还想将输出显示到缓冲区。
手册上说要使用getvalue(),我得到的都是错误。
Python3 manual
import io
import sys
label = sys.argv[1]
domain = sys.argv[2]
ipv4 = sys.argv[3]
ipv6 = sys.argv[4]
fd = open( domain+".external", 'w+')
fd.write(label+"."+domain+". IN AAAA "+ipv6+"\n")
output = io.StringIO()
output.write('First line.\n')
print('Second line.', file=output)
# Retrieve file contents -- this will be
# 'First line.\nSecond line.\n'
contents = output.getvalue()
# Close object and discard memory buffer --
# .getvalue() will now raise an exception.
output.close()
print(fd)
fd.getvalue()
错误:
# python3.4 makecustdomain.py bubba domain.com 1.2.3.4 '2001::1'
<_io.TextIOWrapper name='domain.com.external' mode='w' encoding='US-ASCII'>
Traceback (most recent call last):
File "makecustdomain.py", line 84, in <module>
fd.getvalue()
AttributeError: '_io.TextIOWrapper' object has no attribute 'getvalue
如何将io stream write function data中的数据输出到缓冲区和文件?
您使用open()
打开文件,因此它不是StringIO 对象,而是类文件对象。要在写入文件后获取文件内容,您可以使用 mode = 'w+'
打开文件,而不是 fd.getvalue()
,执行:
fd.seek(0)
var = fd.read()
这会将文件的内容放入var。不过,这也会将您置于文件的开头,因此请小心进行进一步的写入。
我有一个程序可以从 cli sys.argv[] 读取数据,然后将其写入文件。 我还想将输出显示到缓冲区。
手册上说要使用getvalue(),我得到的都是错误。 Python3 manual
import io
import sys
label = sys.argv[1]
domain = sys.argv[2]
ipv4 = sys.argv[3]
ipv6 = sys.argv[4]
fd = open( domain+".external", 'w+')
fd.write(label+"."+domain+". IN AAAA "+ipv6+"\n")
output = io.StringIO()
output.write('First line.\n')
print('Second line.', file=output)
# Retrieve file contents -- this will be
# 'First line.\nSecond line.\n'
contents = output.getvalue()
# Close object and discard memory buffer --
# .getvalue() will now raise an exception.
output.close()
print(fd)
fd.getvalue()
错误:
# python3.4 makecustdomain.py bubba domain.com 1.2.3.4 '2001::1'
<_io.TextIOWrapper name='domain.com.external' mode='w' encoding='US-ASCII'>
Traceback (most recent call last):
File "makecustdomain.py", line 84, in <module>
fd.getvalue()
AttributeError: '_io.TextIOWrapper' object has no attribute 'getvalue
如何将io stream write function data中的数据输出到缓冲区和文件?
您使用open()
打开文件,因此它不是StringIO 对象,而是类文件对象。要在写入文件后获取文件内容,您可以使用 mode = 'w+'
打开文件,而不是 fd.getvalue()
,执行:
fd.seek(0)
var = fd.read()
这会将文件的内容放入var。不过,这也会将您置于文件的开头,因此请小心进行进一步的写入。