f.read 返回空值
我现在在解释器里做这些事情。
loc1 = '/council/council1'
file1 = open(loc1, 'r')
到这个时候,我可以用 file1.read() 来读取文件内容,它会把文件的内容作为字符串打印到标准输出上。
但是如果我加上这个……
string1 = file1.read()
字符串1的结果却是空的……我完全不知道我哪里出错了。这看起来应该是最基本的操作啊!
如果我再输入一次 file1.read(),标准输出的结果就是一个空字符串。所以,似乎在我尝试用 file1.read() 创建字符串的时候,我把文件给丢掉了。
6 个回答
0
使用 with
是最好的写法,因为它在使用完文件后会自动关闭与文件的连接(从 Python 2.5 开始就这样做了):
with open('/council/council1', 'r') as input_file:
text = input_file.read()
print(text)
3
你并不会丢失数据,只是把指针移动到了文件的末尾,然后再尝试读取更多的数据。因为已经到文件的末尾了,所以没有更多的数据可以读取,你会得到一个空字符串。你可以尝试重新打开文件或者把指针移动回文件的开头:
f.read()
f.seek(0)
f.read()
5
你只能读取一个文件一次。读取完后,当前的读取位置就在文件的末尾。
如果你在重新读取之前加上 file1.seek(0)
,那么你就可以再次读取文件的内容。不过,更好的方法是第一次读取的时候把内容放到一个字符串里,然后把它保存在内存中:
loc1 = '/council/council1'
file1 = open(loc1, 'r')
string1 = file1.read()
print string1