gpt4 book ai didi

python - 在用户定义函数中访问全局文件

转载 作者:太空宇宙 更新时间:2023-11-03 14:28:15 24 4
gpt4 key购买 nike

我正在尝试访问全局打开的文件,如下所示:

with open("number.txt") as num:
val=int(num.read())

考虑number.txt将有一些数字在上述代码行之后,如果我在方法中使用上述文件指针,如下所示:

def updateval():
global num
num.write(numb)

我收到错误如下:ValueError:对已关闭文件进行 I/O 操作如果我在函数内部打开文件,那么不会有任何问题。但我只想打开文件一次,因此在许多其他函数中我可以执行文件操作,而无需一次又一次打开

请帮我解决这个问题!!非常感谢提前..

最佳答案

您有两个问题:

  1. with 当封闭的代码块存在时关闭文件。
  2. 您打开文件进行读取,因此即使您不关闭该文件,也无法对其进行写入。

解决方案1:

with open('number.txt') as num:  # opens for read-only by default
val = int(num.read())
# file is closed here

def updateval(numb):
with output('number.txt','w') as num: # re-opened for writing
num.write(numb)
# file is closed here

解决方案 2(如果您确实想打开文件一次):

num = open('number.txt','r+')  # Open for reading and updating.
val = int(num.read())

def updateval(numb):
# You don't need "global" when you mutate an object,
# only for new assignment, e.g. num = open(...)
num.seek(0) # make sure to write at the beginning of the file.
num.truncate() # erase the current content.
num.write(str(numb)) # write the number as a string
num.flush() # make sure to flush it to disk.

显然,第二种解决方案你必须对你正在做的事情进行微观管理。使用解决方案 1。

关于python - 在用户定义函数中访问全局文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47478050/

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