我无法关闭此文件,因为该文件直接输入到“行”列表中。
我尝试使用命令行进行关闭。close(),但是它不起作用。
def readfile():
lines = [line.rstrip('\n') for line in open('8ballresponses.txt', 'r')]
print(random.choice(lines))
我没有收到错误,但我希望能够关闭文件。
答案 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 post
“ with
结束时,文件将关闭。即使文件中引发异常,也是如此。”
您可以通过保留带有open(...):块的方式来显式或隐式地手动调用文件对象的close()方法。当然,此方法始终可以在任何Python实现中使用。
答案 4 :(得分:0)
您可以使用try
和finally
块来完成这项工作。
例如:
def readfile():
file = open('8ballresponses.txt', 'r')
try:
lines = [line.rstrip('\n') for line in file]
print(random.choice(lines))
finally:
file.close()