Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.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写文件的中间吗?_Python_File - Fatal编程技术网

你能用python写文件的中间吗?

你能用python写文件的中间吗?,python,file,Python,File,我想写到文件中的一行中间 例如,我有一个文件: Text.txt: "i would like to insert information over here >>>>>>>[]<<<<<<<<" 作为该行中的文本,您应该输入整行,否则它无法工作(尽管我没有测试) 作为该行中的文本,您应该输入整行,否则它无法工作(虽然我没有测试)我认为您可以做的是用您想要的相同数量的其他字符替换现有字

我想写到文件中的一行中间

例如,我有一个文件:

Text.txt:

"i would like to insert information over here >>>>>>>[]<<<<<<<<"
作为该行中的文本,您应该输入整行,否则它无法工作(尽管我没有测试)


作为该行中的文本,您应该输入整行,否则它无法工作(虽然我没有测试)

我认为您可以做的是用您想要的相同数量的其他字符替换现有字符。您可以打开文件,找到起始点,然后开始写入。但如果使用
f.write()
,则将覆盖以下所有字节。如果你想在两者之间“插入”一些东西,你必须阅读并重写文件的以下所有内容

覆盖:

with open('text.txt', 'w') as f:
    f.write("0123456789")

# now the file 'text.txt' has "0123456789"
    
with open('text.txt', 'r+b') as f:
    f.seek(-4, 2)
    f.write(b'a')

# now the file 'text.txt' has "012345a789"
插入:

with open('text.txt', 'w') as f:
    f.write("0123456789")

# now the file 'text.txt' has "0123456789" 
with open('text.txt', 'r+b') as f:
    f.seek(-4, 2)
    the_rest = f.read()
    f.seek(-4, 2)
    f.write(b'a')
    f.write(the_rest)

# now the file 'text.txt' has "012345a6789"

我认为你能做的就是用你想要的相同数量的其他字符替换已经存在的字符。您可以打开文件,找到起始点,然后开始写入。但如果使用
f.write()
,则将覆盖以下所有字节。如果你想在两者之间“插入”一些东西,你必须阅读并重写文件的以下所有内容

覆盖:

with open('text.txt', 'w') as f:
    f.write("0123456789")

# now the file 'text.txt' has "0123456789"
    
with open('text.txt', 'r+b') as f:
    f.seek(-4, 2)
    f.write(b'a')

# now the file 'text.txt' has "012345a789"
插入:

with open('text.txt', 'w') as f:
    f.write("0123456789")

# now the file 'text.txt' has "0123456789" 
with open('text.txt', 'r+b') as f:
    f.seek(-4, 2)
    the_rest = f.read()
    f.seek(-4, 2)
    f.write(b'a')
    f.write(the_rest)

# now the file 'text.txt' has "012345a6789"

你已经添加了<代码> Python < /Cord>标签,但是你没有添加任何代码给你的问题。我从未听说过任何操作系统都能在文件中间插入数据,所以这不是任何编程语言都能提供的。你期望的结果是什么?你可以开始写任何你想去的地方。但是你会从那里改写原始数据,而不是插入它。你已经添加了<代码> Python < /Cord>标签,但是你没有向你的问题添加任何代码。我从来没有听说过操作系统在文件中间插入数据的能力,所以这不是任何编程语言都能提供的。您期望的结果是什么?您可以在任何地方开始编写,但您将从那里覆盖原始数据,而不是插入它。@Thierrylahuille自己尝试一下,即使它似乎不起作用,但您必须将整行内容读入内存。想象一下,一个1GB的文本文件没有一个换行符。是的@ShihaoXu,文件大小是当时最大的问题,我也注意到并得到了said@ThierryLathuille你自己试试看,即使它看起来不太管用,但你必须把整句话读到记忆中。假设一个1GB的文本文件没有一个换行符。是的@ShihaoXu,文件大小是当时最大的问题,因为我也注意到并得到了saidI不明白函数seek()是什么does@low-keyForce仅供参考。当你打开一个文件时,会有一个光标(我们称之为文件光标)指向文件的开头。读或写时,光标会自动移动到下一个位置
f.seek(-4,2)
将光标移到第4个字节,从末尾向后计数(有关详细信息,请查看上面的链接)。运行
f.read()
时,光标停在文件末尾。因此,您必须将其移回正确的位置,以便在正确的位置写入所需的内容does@low-keyForce仅供参考。当你打开一个文件时,会有一个光标(我们称之为文件光标)指向文件的开头。读或写时,光标会自动移动到下一个位置
f.seek(-4,2)
将光标移到第4个字节,从末尾向后计数(有关详细信息,请查看上面的链接)。运行
f.read()
时,光标停在文件末尾。因此,您必须将其移回正确的位置,以便在正确的位置编写所需的内容。