2017-2019年计算机视觉顶会文章收录 AAAI2017-2019 CVPR2017-2019 ECCV2018 ICCV2017-2019 ICLR2017-2019 NIPS2017-2019
转载:https://www.jianshu.com/p/d8f5357b95b3
Module: tf.gfile
tf.gfile.FastGFile()
读写文件,句柄具有.read()
方法,实测凡是使用tf.gfile.FastGFile()
的地方换乘open()
并不会报错(包括读取普通文件和读取tf模型文件):
'''
本代码也是加载图pb文件并获取节点张量句柄的标准流程,feed_dict输入节点 & sess.run(输出节点)就可以使用模型了
'''
#with tf.gfile.FastGFile(os.path.join(MODEL_DIR, MODEL_FILE), 'rb') as f: # 使用tf.gfile.FastGFile()函数的方法
with open(os.path.join(MODEL_DIR, MODEL_FILE), 'rb') as f: # 使用open()函数的方法
graph_def = tf.GraphDef() # 生成图
graph_def.ParseFromString(f.read()) # 图加载模型
bottleneck_tensor,jpeg_data_tensor = tf.import_graph_def( # 从图上读取张量,同时把图设为默认图
graph_def,
return_elements=[BOTTLENECK_TENSOR_NAME,JPEG_DATA_TENSOR_NAME])
print(gfile.FastGFile(image_path,'rb').read()==open(image_path,'rb').read())
# True
除了read()
方法外,常用的方法如下:
read(n=-1)
# 默认返回整个文件,否则返回n bytes of the file
readline()
# 读取文件的下一行,保留末尾的'\n'换行符
readlines()
# 读取文件中所有的文段(line),并存放在列表(list)中
size()
# 返回文件大小
write(file_content)
# Writes file_content to the file. Appends to the end of the file.
参考资料:
Python默认文件读写open()
读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘,所以,读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),然后,通过操作系统提供的接口从这个文件对象中读取数据(读文件),或者把数据写入这个文件对象(写文件)。
使用Python内置的 open()
函数,传入文件名和标示符:
>>> f = open('/Users/michael/test.txt', 'r')
'r'
为标示符,包含:
'r': 默认值,表示从文件读取数据。
'w': 表示要向文件写入数据,并截断以前的内容
'a': 表示要向文件写入数据,添加到当前内容尾部
'r+': 表示对文件进行可读写操作(删除以前的所有数据)
'r+a': 表示对文件可进行读写操作(添加到当前文件尾部)
'b': 表示要读写二进制数据
若要读取二进制文件,比如图片、视频等,使用'rb'
模式打开文件即可:
>>> f = open('/Users/michael/test.jpg', 'rb')
>>> f.read()
b'\xff\xd8\xff\xe1\x00\x18Exif\x00\x00...' # 十六进制表示的字节
如果文件打开成功,接下来,调用read()
方法可以一次读取文件的全部内容,Python把内容读到内存,用一个str对象表示:
>>> f.read()
'Hello, world!'
最后一步是调用 close()
方法关闭文件。文件使用完毕后必须关闭,因为文件对象会占用操作系统的资源,并且操作系统同一时间能打开的文件数量也是有限的:
>>> f.close()
为了防止忘记关闭文件导致内存占用,推荐使用with
语句来自动帮调用close()
方法:
with open('/path/to/file', 'r') as f:
print(f.read())
参考资料:
作者:DexterLei
链接:https://www.jianshu.com/p/d8f5357b95b3
来源:简书