1 回答

TA貢獻1874條經驗 獲得超12個贊
要從流中寫入,io模塊在這里可以很好地提供幫助。我假設你不希望寫字節文件,所以我們將使用StringIO對象,這將把一個字符串對象就像一個文件處理程序
from io import StringIO
def write2file(bytes_to_write):
print "Listing local files ready for copying:"
listFiles()
print 'Enter name of file to copy:'
name = raw_input()
pastedFile = readAll('AT+URDFILE="' + name + '"')
# I'm assuming pastedFile is a `string` object
str_obj = StringIO(pastedFile)
# Now we can read in specific bytes-sizes from str_obj
fh = open(os.path.join(path, name), 'w')
# read in the first bit, bytes_to_write is an int for number of bytes you want to read
bit = str_obj.read(bytes_to_write)
while bit:
fh.write(bit)
bit = str_obj.read(bytes_to_write)
fh.close()
這種工作方式是StringIO將read字節x個,直至碰到字符串的結尾,那么它將返回一個空字符串,這將終止while循環。
打開和關閉文件的更簡潔的方法是使用with關鍵字:
with open(filename, w) as fh:
# read in the first bit, bytes_to_write is an int for number of bytes you want to read
bit = str_obj.read(bytes_to_write)
while bit:
fh.write(bit)
bit = str_obj.read(bytes_to_write)
這樣你就不需要顯式open和close命令
注意:這是假設該readAll函數確實讀取了您提供的整個文件。一次只能讀取 128 個字節可能會引起質疑
添加回答
舉報