gpt4 book ai didi

python - 在 Python 中,如何打开一个文件并在一行中读取它,然后仍然能够关闭该文件?

转载 作者:太空狗 更新时间:2023-10-30 00:23:39 25 4
gpt4 key购买 nike

在完成这个练习时我遇到了一个问题。

from sys import argv
from os.path import exists

script, from_file, to_file = argv
print "Copying from %s to %s" % (from_file, to_file)

# we could do these two on one line too, how?
input = open(from_file)
indata = input.read()

print "The input file is %d bytes long" % len(indata)
print "Does the output file exist? %r" % exists(to_file)
print "Ready, hit RETURN to continue, CTRL-C to abort."

raw_input()

output = open(to_file, 'w')
output.write(indata)
print "Alright, all done."
output.close()
input.close()

# we could do these two on a line too, how? 这让我很困惑。我能想到的唯一答案是:

indata = open(from_file).read()

这按照我想要的方式执行,但它需要我删除:

input.close()

因为输入变量不再存在。那么,如何执行关闭操作呢?

你会如何解决这个问题?

最佳答案

在 python 中使用资源的首选方法是使用 context managers :

 with open(infile) as fp:
indata = fp.read()

with 语句负责关闭资源和清理。

如果你愿意,你可以把它写在一行上:

 with open(infile) as fp: indata = fp.read()

然而,这在 python 中被认为是糟糕的风格。

您还可以在 with block 中打开多个文件:

with open(input, 'r') as infile, open(output, 'w') as outfile:
# use infile, outfile

有趣的是,我问了exactly the same question回到我开始学习 python 的时候。

关于python - 在 Python 中,如何打开一个文件并在一行中读取它,然后仍然能够关闭该文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10946134/

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