有没有办法在python中关闭文件,而不使用文件对象?
我无法关闭此文件,因为该文件直接输入到“行”列表中 我尝试过使用命令行关闭.close(),但它不起作用有没有办法在python中关闭文件,而不使用文件对象?,python,Python,我无法关闭此文件,因为该文件直接输入到“行”列表中 我尝试过使用命令行关闭.close(),但它不起作用 def readfile(): lines = [line.rstrip('\n') for line in open('8ballresponses.txt', 'r')] print(random.choice(lines)) 我没有收到错误,但我希望能够关闭该文件。使用和这将在块完成后隐式关闭 with open('8ballresponses.txt', 'r
def readfile():
lines = [line.rstrip('\n') for line in open('8ballresponses.txt', 'r')]
print(random.choice(lines))
我没有收到错误,但我希望能够关闭该文件。使用
和
这将在块完成后隐式关闭
with open('8ballresponses.txt', 'r') as file:
lines = [ line.rstrip("\n") for line in file ]
您可以将
与
打开命令一起使用。这将自动处理所有测试用例失败等(inbuild try除外,最后在python中)
下面的示例与您的代码类似
import random
def readfile():
lines = []
with open(r"C:\Users\user\Desktop\test\read.txt",'r') as f:
lines = f.readlines()
print(random.choice(lines))
当带有的结束时,该文件将被关闭。即使在文件内部引发异常,这也是正确的
通过保留with open(…):块,可以显式或隐式地手动调用文件对象的close()方法。当然,这在任何Python实现上都是有效的。您可以使用try
和finally
块来完成这项工作
例如:
def readfile():
file=open('8ballresponses.txt','r')
尝试:
lines=[line.rstrip('\n')表示文件中的行]
打印(随机选择(行))
最后:
file.close()文件
而不是文件
对象,行
是一个列表
,因此您无法关闭它。您应该使用一个变量来存储文件objectopen('8ballresponses.txt','r')
,以便以后关闭:
def readfile(文件路径):
测试文件=打开(文件路径'r')
lines=[line.rstrip('\n'),用于测试文件中的行]
test_file.close()
打印(随机选择(行))
或者只需将与
一起使用即可关闭python中的文件,而不使用文件对象:
def readfile(文件路径):
打开(文件路径“r”)作为测试文件:
lines=[line.rstrip('\n'),用于测试文件中的行]
打印(行)
以open()作为名称:
自动关闭文件您应该使用以open('8ballresponses.txt','r')作为您的_文件:
并且它将在以块结束时自动关闭。打开('8ballresponses.txt','r')。关闭()
可能是@Sid,它将呈现打开()
几乎毫无用处。@L3viathan这一点甚至没有得到CPython实现的保证-这是目前的情况,已经持续了几十年,可能还会持续一段时间,但这是一个任何人都不应该依赖的实现细节(至少对于生产代码而言)。如果文件不存在这样的“答案”,你不认为这会出现错误吗这些都不是很有用。请不要只是发布链接,而是发布其内容的实质以及如何使用它。文件是可编辑的,因此调用file.read()
是无用的,并且毫无理由地消耗内存。@Brunodesshuilliers我试过了,您正确地更改了它,因此您可能希望使用line.rstrip(“\n”)
,而不是替换它(因为它只看字符串的末尾,所以速度更快)。