gpt4 book ai didi

Python 打印错误消息 io.UnsupportedOperation : not readable

转载 作者:行者123 更新时间:2023-11-28 22:44:26 30 4
gpt4 key购买 nike

我在这个网站上搜索过类似的问题,但没有找到任何有效的解决方案,因此提出了这个问题。我正在编写一个 Python 3.4 程序,其中有一个函数 export,它本质上是将数据附加到文本文件。该函数检查以确保有合适的文件,如果没有,它会创建一个,然后它获取文件的内容,添加附录,并覆盖文件。Python 在 for line in file: 处抛出错误:此外,再次运行该程序时,一旦创建了文本文件,就不会发生此错误。这是函数:

def export(addendum, user):
filename = user + '.txt'
try:
file = open(filename, 'r')
except OSError:
file = open(filename, 'w')
export(addendum, user)
file_contents = ''
print('What day is it? (1-5)')
day = input()
day = int(day)
if day >= 1 and day <= 5:
for line in file:
file_contents += line
file = open(filename, 'w')
new_file = file_contents + '\n' + addendum
file.write(new_file)
file.close()
else:
print('Invalid weekday number...')
sys.exit()

最佳答案

当文件还不存在时会发生这种情况,因为那时文件是以写模式打开的。写模式不可读。

我对这里发生的事情的理解是,当文件在第一次调用时不存在时,您的 except block 会打开一个文件并将一个文件放在那里;然后你出于某种原因递归,它命中这个调用的第一个 block ,并在堆栈的那个级别完成;当它返回到下一个级别时,您的第一次调用将继续,但文件引用仍处于写入模式,无论堆栈的其他级别已经完成。当它到达 for line in file 时,它爆炸了。

我建议您大大简化您在这里进行的操作。

def export(addendum, user):
filename = user + '.txt'
try:
with open(filename, 'r') as file:
contents = file.read()
except OSError:
contents = ""
day = input("What day is it (1-5)?")
day = int(day)
if not (1 <= day <= 5):
print("Invalid weekday number...")
sys.exit()
contents += '\n' + addendum
with open(filename, 'w') as file:
file.write(contents)

关于Python 打印错误消息 io.UnsupportedOperation : not readable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29528910/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com