在做一些Python教程时,本书的作者要求提供以下内容(打开文件并阅读其内容):
#we could do this in one line, how?
in_file = open(from_file)
indata = in_file.read()
我怎么能在一行中做到这一点?
答案 0 :(得分:1)
您可以通过简单地扩展路径中的内容并从中读取来从文件处理程序获取文件的所有内容。
indata = open(from_file).read()
但是,如果你使用with
阻止,它会发生什么变得更加明显并且更容易扩展。
with open(from_file) as fh: # start a file handler that will close itself!
indata = fh.read() # get all of the contents of in_file in one go as a string
除此之外,如果(例如)文件路径不存在,则应保护文件的打开和关闭IOErrors
。
最后,默认情况下,文件以只读方式打开,如果您(或其他人以后)尝试写入文件,则会引发错误,这将保护数据块。您可以根据需要将此更改从'r'
更改为variety of other options。
以上是一个相当完整的例子。
def get_file_contents(input_path):
try:
with open(input_path, 'r') as fh:
return fh.read().strip()
except IOError:
return None