当前位置: 首页 > 面试题库 >

Python中truncate()方法的行为

易炳
2023-03-14
问题内容

这是来自Zed
Shaw的Python教程的练习16。truncate在这种情况下,我很难理解该功能的确切作用。因此逻辑是我们打开一个文件,然后…将其缩短?为了什么?这里到底发生了什么?

from sys import argv

script, filename = argv

print "We're going to erase %r." % filename
print "If you don't want that, hit CTRL-C (^C)."
print "If you do want that, hit RETURN."

raw_input("?")

print "Opening the file..."
target = open(filename, 'w')

print "Truncating the file.  Goodbye!"
target.truncate()

print "Now I'm going to ask you for three lines."

line1 = raw_input("line 1: ")
line2 = raw_input("line 2: ")
line3 = raw_input("line 3: ")

print "I'm going to write these to the file."

target.write(line1 + "\n" + line2 + "\n" + line3 + "\n")

print "And finally, we close it."
target.close()

问题答案:

保持可疑是对的。

首先,file.truncate这样做:

截断文件的大小。如果存在可选的 size 参数,则文件将被截断为(最多)该大小。尺寸默认为当前位置…

与Zed的描述不太相同-
仅在当前位置是文件的开头时才“清空文件”,但由于我们只是打开了文件(而不是在a模式下),所以当前位置是开始,因此不相关。我们将截断为空文件。

一切都很好,除了open已经做到了:

模式最常用的值是'r'用于读取,'w'用于写入(如果文件已经存在,则将其截断)…

因此,我们打开文件,如果不存在则创建文件,如果存在则将其截断为0字节。然后,在下一行,将其截断为0个字节。

(由于我们已经将其截断,因此“截断文件。再见!”的消息非常容易引起误解。想象一下,您在该行上放置了一个断点,并决定在执行该程序之前将其终止…)

但是请注意,这并不是Zed的愚蠢错误。他似乎是专门为在练习5中指出要点而这样做的:

如果您使用'w'模式打开文件,那么您真的需要target.truncate()吗?阅读有关Pythonopen函数的文档,然后查看是否正确。



 类似资料:
  • Python3 File(文件) 方法 概述 truncate() 方法用于从文件的首行首字符开始截断,截断文件为 size 个字符,无 size 表示从当前位置截断;截断之后 V 后面的所有字符被删除,其中 Widnows 系统下的换行代表2个字符大小。 。 语法 truncate() 方法语法如下: fileObject.truncate( [ size ]) 参数 size -- 可选,

  • 问题内容: 假设有一个包含字符串的文件。 现在,考虑以下Python代码: 现在,我希望现在包含它,但是另外还有一些奇怪的符号! 更新:截断后刷新无济于事。 问题答案: 这是因为截断不会更改流的位置。 当你的文件,你移动位置到结束。因此,连续的s将从该位置写入文件。 但是,当您调用时 ,似乎不仅尝试将缓冲区写入文件,而且还会进行一些错误检查并修复当前文件位置。在 之后调用时 ,将不写入任何内容(缓

  • 描述 (Description) 此函数将FILEHANDLE指定的文件大小截断(缩小)到指定的LENGTH(以字节为单位)。 如果系统上未实现该功能,则会产生致命错误。 语法 (Syntax) 以下是此函数的简单语法 - truncate FILEHANDLE, LENGTH 返回值 (Return Value) 如果操作失败,则此函数返回undef,成功时返回1。<!-- 例子 (Examp

  • truncate(改变文件大小) 相关函数 open,ftruncate 表头文件 #include<unistd.h> 定义函数 int truncate(const char * path,off_t length); 函数说明 truncate()会将参数path 指定的文件大小改为参数length 指定的大小。如果原来的文件大小比参数length大,则超过的部分会被删去。 返回值 执行成功

  • 丢弃任何小数位后返回一个整数。 语法 (Syntax) Number.truncate() 返回值 (Return Value) 返回不带小数点的int 。 例子 (Example) void main() { double n1 = 2.123; var value = n1.truncate(); print("The truncated value of 2.123

  • truncate 改变文件大小 相关函数 open,ftruncate 表头文件 #include<unistd.h> 定义函数 int truncate(const char *path, off_t length); 函数说明 truncate()会将参数path 指定的文件大小改为参数length 指定的大小。如果原来的文件大小比参数length大,则超过的部分会被删去。 返回值 执行成