Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python write()函数不覆盖_Python - Fatal编程技术网

Python write()函数不覆盖

Python write()函数不覆盖,python,Python,我正在尝试覆盖文件的内容。但是,程序不会覆盖,而是在行尾追加字符。该文件包含数字0。这是我正在使用的代码: file = open('my_file', 'w') for x in range(5): >>file.write(str(x)) 我得到的结果是“01234”,但我预期的结果是“4”。这完全正常。以w模式打开文件会在打开文件后立即截断文件一次。它不会在每次写入后重置文件指针。写入是连续进行的,每次写入都将文件指针留在写入的数据末尾 为了获得期望的结果,您需要在循环的每

我正在尝试覆盖文件的内容。但是,程序不会覆盖,而是在行尾追加字符。该文件包含数字0。这是我正在使用的代码:

file = open('my_file', 'w')

for x in range(5):
>>file.write(str(x))

我得到的结果是“01234”,但我预期的结果是“4”。

这完全正常。以w模式打开文件会在打开文件后立即截断文件一次。它不会在每次写入后重置文件指针。写入是连续进行的,每次写入都将文件指针留在写入的数据末尾

为了获得期望的结果,您需要在循环的每次迭代中重新打开文件

for x in range(5):
    with open('my_file', 'w') as f:
        f.write(str(x))

我相信您得到“01234”的原因是因为您将代码放入for循环中:x从0增加到4,并且每次都写入文本文件。尝试删除for循环并将x设置为4


您还可以尝试在for循环内部的write模式下使用open函数。

您正在for循环外部打开一个文件,并且该文件将被打开以供进一步操作。您没有关闭该文件。所以,即使它处于写模式,指针也不会被重置

以下是示例代码:

for x in range(5):
    f = open('1.txt' , 'w')
    f.write(str(x))
    f.close()

这难道不比你完成后增加x和写东西效率更低吗?@OrdoFlammae-OP不是在问效率。不,你说得对,他不是。不过,我只是觉得最好能提一下,它的效率确实很低。那就是。。。。file.write应该做什么。要覆盖,您必须反复打开和关闭文件。然而,我建议你完成工作后数数和写。