0

我正在使用python 3并有一个文本文件,我将它放入一个字符串变量中,然后创建一个像这样的字节数组

file = open('labb9Text.txt', "r")
for lines in file:
    txt = str(lines)
    byteArr = bytearray(txt, 'utf-8')

现在我想在 for 循环之外检索该变量。我试过这样做:

byteArr = bytearray()

file = open('labb9Text.txt', "r")
for lines in file:
    txt = str(lines)
    byteArr = bytearray(txt, 'utf-8')

print(byteArr)

但这不起作用, byteArr 是空的。我怎样才能做到这一点?

提前致谢

4

1 回答 1

1

它可以正常工作,但仅在字面意义上。为什么byteArr运行该循环后为空?因为在循环内部,您将其设置为依次为每一行的内容,并且最后一行必须为空。所以你只得到最后一行的有效结果。

您在循环之前正确创建了一个变量byteArr,但在循环内您必须添加新字节,而不是替换它们。

再补充几点:在lines in file..变量lines中已经是一个字符串,所以txt = str(lines)没有必要。with使用它打开文件通常更简洁,因为它还会在该代码块的末尾自动关闭它(实际上这是您在这里忘记做的事情)。

byteArr = bytearray()

with open('labb9Text.txt', "r") as file:
    for lines in file:
        byteArr += bytearray(lines, 'utf-8')
print (byteArr)

随着事情的发展,这甚至可以更容易地完成,但前提是该编码utf-8不是真正必要的(也就是说,如果文件已经采用正确的编码):

with open('labb9Text.txt', "rb") as file:
    byteArray = bytearray(file.read())

它根本不需要任何循环。

于 2020-03-06T15:38:58.167 回答