执行以下操作并不显式处理文件对象并调用其close()方法是不好的做法吗?
for line in open('hello.txt'):
print line
Run Code Online (Sandbox Code Playgroud)
注意 - 这是针对尚未拥有该with语句的Python版本.
我问,因为Python文档似乎推荐这个: -
f = open("hello.txt")
try:
for line in f:
print line
finally:
f.close()
Run Code Online (Sandbox Code Playgroud)
这似乎比必要的更冗长.
例如,我在文件中有以下几行:
- 汤姆是个男人
- 莎拉是个女人
- 亚历克斯也是一个人
我想搜索"Sara"但想要回归整体
def findLine(self, str):
...
Run Code Online (Sandbox Code Playgroud)
当我打电话时findLine("Sara"),它会返回"2. Sara is a woman"
如何使用Python和正则表达式(或其他非正则表达式方法)实现此目的
在执行完成后,单个调用open()而不将其分配给变量会关闭文件句柄吗?
import json
_keyfile = json.load(open("s3_key.json", "r"))
Run Code Online (Sandbox Code Playgroud)
如果你打电话给.read()呢?
import json
_keyfile = json.loads(open("s3_key.json", "r").read())
Run Code Online (Sandbox Code Playgroud) 我知道
with open(my_file, 'r') as f:
pass
Run Code Online (Sandbox Code Playgroud)
打开和关闭文件。也,
f = open(my_file, 'r'); f.close()
Run Code Online (Sandbox Code Playgroud)
一样。
那这个呢:
open(my_file, 'r')
Run Code Online (Sandbox Code Playgroud)
我的实际问题是这样的:
import json;
json.load(open(my_file, 'r'))
Run Code Online (Sandbox Code Playgroud)
与
import json;
with open(my_file, 'r') as f:
j = json.load(f)
Run Code Online (Sandbox Code Playgroud)
我猜从技术上讲,文件应该保持打开状态,但是我很确定,由于未分配文件对象,因此它立即被Python的垃圾收集器关闭了。
对于文件I/O的目的是什么:
with open
Run Code Online (Sandbox Code Playgroud)
我应该使用它而不是:
f=open('file', 'w')
f.write('foo)'
f.close()
Run Code Online (Sandbox Code Playgroud)