2015-10-22 49 views
0

读取已打开文件的第一个字节而不搞乱文件位置的最佳方法是什么?这是太多的跳来跳去:在Python中读取打开文件的第一个字节

current_position = f.tell() 

f.seek(0) 
b1 = f.read(1) 
b2 = f.read(1) 

f.seek(current_position, 0) 
+2

你想达到什么目的?为什么不在第一次打开文件时存储前几个字节? – jonrsharpe

+0

我看到这段代码没有错。 –

+0

您所指的文件'位置'只是一个小型整数,其行为与书签相当。移动它并不是什么大事。 –

回答

2

你可以使用os.pread(fd, buffersize, offset)但只在Python 3.3增加。像这样:

os.pread(f.fileno(), 2, 0) 

读取文件开始处的2个字节。

另一种办法是复制的fd,然后寻求在重复,然后关闭重复:

d = os.dup(f.fileno()) 
os.lseek(d, 0, 0) 
b1 = os.read(d, 1) 
b2 = os.read(d, 1) 
os.close(d) 

为什么不能文件对象直接复制?