📜  在Python中设置文件偏移

📅  最后修改于: 2022-05-13 01:54:34.894000             🧑  作者: Mango

在Python中设置文件偏移

先决条件: seek() , tell()

Python使得用最少的代码创建/编辑文本文件变得非常容易。要访问文本文件,我们必须创建一个文件句柄,它将在文本文件的开头产生一个偏移量。简单的说, offset就是读/写指针在文件中的位置。偏移量稍后用于根据给定的权限在文本文件中执行操作,例如读取、写入等。

在开始之前,让我们回顾一下文件处理的一些基本方法:

  • seek() :在Python中,seek()函数用于将文件句柄的位置更改为给定的特定位置。文件句柄就像一个游标,它定义了必须在文件中读取或写入数据的位置。
  • tell():访问模式控制在打开的文件中可能进行的操作类型。它指的是文件打开后的使用方式。这些模式还定义了文件句柄在文件中的位置。文件句柄就像一个游标,它定义了必须从哪里读取或写入文件中的数据。有时了解文件句柄的位置对我们来说很重要。 tell() 方法可用于获取文件句柄的位置。 tell() 方法返回文件对象的当前位置。此方法不接受任何参数并返回一个整数值。最初文件指针指向文件的开头(如果没有以追加模式打开)。因此,tell() 的初始值为零。

让我们通过逐步实施来理解这一点:

第一步:创建一个文本文件。

让我们创建一个包含多封电子邮件的文本文件“emails.txt”来演示 offset 的工作:

Python3
# WRITING OPERATIONS
# creates a file named emails.txt
fhand = open("emails.txt", "w")
 
# this enters the values into the file
fhand.write('''stephen.marquard@uct.ac.za
stephen.marquard@uct.ac.za
louis@media.berkeley.edu
louis@media.berkeley.edu
louis@media.berkeley.edu
louis@media.berkeley.edu
ray@media.berkeley.edu
ray@media.berkeley.edu
cwen@iupui.edu
cwen@iupui.edu
cwen@iupui.edu
cwen@iupui.edu
cwen@iupui.edu
cwen@iupui.edu''')
 
# closing the file
fhand.close()


Python3
# opening the file with reading permissions
fhand = open("emails.txt", "r")
 
# print the content of the whole file
print(fhand.read())
 
# close the file
fhand.close()


Python3
# open the file
fhand = open("emails.txt", "r")
 
# check default value of offset
print(f"The default position of offset is: {fhand.tell()}")


Python3
# reading first nth characters
n = 40
characters = fhand.read(n)
print(f"First {n} Characters : ", characters)


Python3
# Checking the current offset/position
offset = fhand.tell()
print("Current position of the offset:", offset)


Python3
# Repositioning the offset to the beginning
offset = fhand.seek(0)
print("Offset after using seek function : ", offset)
 
# closing the file
fhand.close()


这将创建一个文件“emails.txt”并用电子邮件填充它。

第 2 步:让我们通过编写以下代码检查我们刚刚创建的 emails.txt 文件的内容:

蟒蛇3

# opening the file with reading permissions
fhand = open("emails.txt", "r")
 
# print the content of the whole file
print(fhand.read())
 
# close the file
fhand.close()

输出:

第 3 步:

创建“emails.txt”文件后。我们通过再次打开它来读取它,这一次具有读取权限,这将一个名为“fhand”的偏移量设置到文件的开头,即位置 0。我们可以使用以下代码进行检查:

蟒蛇3

# open the file
fhand = open("emails.txt", "r")
 
# check default value of offset
print(f"The default position of offset is: {fhand.tell()}")

输出:

The default position of offset is: 0

第 4 步:我们编写一个程序,要求用户从文件的开头输入他们希望看到的字符数。

蟒蛇3

# reading first nth characters
n = 40
characters = fhand.read(n)
print(f"First {n} Characters : ", characters)

输出:

First 40 Characters :  stephen.marquard@uct.ac.za
stephen.marqu

这里我输入显示40个字符。

第 5 步:然后我们使用 tell()函数检查偏移量的位置。我们使用这个代码:

蟒蛇3

# Checking the current offset/position
offset = fhand.tell()
print("Current position of the offset:", offset)

输出:

Current position of the offset: 41

通过覆盖 40 个字符,偏移量现在获得第 41 个位置。

第 6 步:现在,如果我们想将偏移量的当前位置更改为我们想要的任何位置,我们可以使用seek()函数来做到这一点。通过传递我们希望偏移量所在的位置,作为搜索函数的参数,我们可以使偏移量跳转到该位置。我们可以使用此代码进行确认:

蟒蛇3

# Repositioning the offset to the beginning
offset = fhand.seek(0)
print("Offset after using seek function : ", offset)
 
# closing the file
fhand.close()

输出:

Offset after using seek function :  0

正如我们在上面的代码中看到的,当我们在 set函数中给定参数“0”时,偏移量会跳转到文件的开头。输出中显示的偏移值将是: