有没有办法关闭python中没有文件对象的文件?

时间:2019-10-24 11:47:43

标签: python

我无法关闭此文件,因为该文件直接输入到“行”列表中。

我尝试使用命令行进行关闭。close(),但是它不起作用。

def readfile():
    lines = [line.rstrip('\n') for line in open('8ballresponses.txt', 'r')]  
    print(random.choice(lines))

我没有收到错误,但我希望能够关闭文件。

5 个答案:

答案 0 :(得分:2)

file不是lines对象,而是list,因此无法将其关闭。并且您应该将文件对象open('8ballresponses.txt', 'r')与一个变量一起存储,以便以后将其关闭:

def readfile(file_path):
    test_file = open(file_path, 'r')
    lines = [line.rstrip('\n') for line in test_file]
    test_file.close()
    print(random.choice(lines))

或者直接使用with“在python中关闭文件,而没有文件对象”:

def readfile(file_path):
    with open(file_path, 'r') as test_file:
        lines = [line.rstrip('\n') for line in test_file]
        print(lines)

答案 1 :(得分:1)

您可以使用with打开命令。这将自动处理所有测试用例的失败等。(内建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))

答案 2 :(得分:0)

使用with,这将在阻止完成后隐式关闭

with  open('8ballresponses.txt', 'r') as file:
      lines = [ line.rstrip("\n") for line in file ]  

答案 3 :(得分:0)

In this postwith结束时,文件将关闭。即使文件中引发异常,也是如此。”

您可以通过保留带有open(...):块的方式来显式或隐式地手动调用文件对象的close()方法。当然,此方法始终可以在任何Python实现中使用。

答案 4 :(得分:0)

您可以使用tryfinally块来完成这项工作。

例如:

def readfile():
    file = open('8ballresponses.txt', 'r')
    try:
        lines = [line.rstrip('\n') for line in file]  
        print(random.choice(lines))
    finally:
        file.close()