woshizhangpengp 发表于 2023-7-18 12:54:43

python作业53课后习题

f.seek(5),这样写程序指针是不是就到第五个字母那里了,所以截断文件之后是不是应该从第六个截断到第15个,也就是FishBFishC。但是程序执行完是从第一个开始截断到第15个,截断的结果是FishAFishBFishC。请教大佬,是不是我对f.seek()的理解有误,速查宝典翻了几遍都没看到seek这个函数,去哪里能看到seek的用法

陶远航 发表于 2023-7-18 12:54:58

f.seek() 函数用于移动文件指针的位置。具体来说,f.seek(5) 表示将文件指针移动到文件的第 5 个字节(而不是第 5 个字符)处。

在默认情况下,文件以二进制模式打开,每个字符占用一个字节。所以如果你调用 f.seek(5),文件指针会移动到第 6 个字符的位置。

关于截断文件的问题,f.seek() 只是移动文件指针,并不会影响截断操作。要截断文件,你需要使用 f.truncate() 方法,它会从当前文件指针位置截断文件。如果你想截断文件并保留从第 6 个字符开始到第 15 个字符的内容,可以按照以下方式实现:

with open('file.txt', 'r+') as f:
    f.seek(5)# 将文件指针移动到第 6 个字符处
    f.truncate(15)# 从当前文件指针位置截断文件到第 15 个字符处


这样执行完毕后,文件内容会变为 FishAFishBFishC。

关于 b]seek() 和其他文件操作的更多详细信息,你可以参考 Python 官方文档中关于文件对象的说明:。

希望能帮到你,如果你还有其他问题,请随时提问!

isdkz 发表于 2023-7-18 12:55:10

f.seek(offset) 是Python文件处理的一个重要方法,它用于改变文件读取或写入的位置。 offset 参数表示偏移量,该参数可以是正数或负数。正数表示向文件末尾移动,负数表示向文件开头移动。

f.seek(5) 表示将文件的指针移动到文件的第5个字节位置,也就是说,下一次读取或写入将从第6个字节开始。

关于你的问题, f.seek(5) 后,程序指针确实会到第五个字节那里。但是关于截断,你可能在使用 f.truncate(size) 方法。这个方法的作用是将文件截断为 size 个字节。如果省略了 size 参数,那么默认就是从当前文件指针的位置开始截断到文件末尾。

所以如果你的程序执行了 f.seek(5) ,然后调用了 f.truncate() (没有指定大小),文件将会从第六个字节开始被截断,因为此时的文件指针处在第五个字节的位置。

但如果执行了 f.seek(5) ,然后调用了 f.truncate(15) ,那么整个文件将被截断为15个字节,因为 f.truncate(15) 表示将文件截断为15个字节,而不管当前文件指针的位置在哪里。

至于你提到的结果,可能需要查看你的具体代码,看一下你在执行 f.seek(5) 之后做了什么,以及在什么时候调用了 f.truncate() 。

在Python官方文档里,你可以找到关于 seek 和 truncate 等文件操作方法的详细信息,包括它们的定义和用法。这是Python官方文档的链接:https://docs.python.org/3/tutorial/inputoutput.html#methods-of-file-objects。

sfqxx 发表于 2023-7-18 14:43:12

在Python中,`f.seek(offset)` 方法用于改变文件读写指针的位置。`offset` 是相对于文件开头的偏移量,以字节为单位。所以 `f.seek(5)` 会将文件指针移动到文件的第六个字节。这是因为在计算机编程中,计数通常是从0开始的,所以offset为5实际上是指第6个字节。

而关于你的截断问题,如果你使用了 `f.truncate(size)` 方法,那么它会将文件裁剪为 `size` 字节的大小。如果 `size` 大于当前文件大小,则保持原样。如果 `size` 小于当前文件大小,则额外的数据将被丢弃。注意,`f.truncate(size)` 并不会移动文件指针,所以在你执行 `f.truncate(size)` 之后,文件指针的位置仍然保持在truncate之前的位置。

不过要注意,你提到的 "FishAFishBFishC" 看起来像是字符而不是字节。一个字符可能占用多个字节,这取决于你的编码方式。例如,在UTF-8编码中,一个字符可以占用1到4个字节。所以在使用 `f.seek()` 和 `f.truncate()` 时,你需要清楚你处理的是字节还是字符。

关于`seek()`的用法,你可以查看Python的官方文档,或者直接在Python shell中使用`help(file.seek)`进行查询。在Python官方文档中有关于内置函数open的详细说明包含`seek`和其他文件操作方法。

求最佳答案{:10_254:}
页: [1]
查看完整版本: python作业53课后习题