为什么 read() 函数会删除我文件中的所有数据?



我正在做一个项目,在这个项目中我必须制作一个多剪贴板。以下是它将要执行的操作:

这个多剪贴板将贯穿终端。它将创建一个名为剪贴板的文件,并将所有复制的文本保存在那里。该人可以根据需要添加任意数量的复制文本,如果需要,他也可以清除多剪贴板。

代码如下:

import pyperclip
import sys
jim=open('multiclipboardd','w')
#This will copy text to the multiclipboard
if len(sys.argv)==2 and (sys.argv[1].lower())=='save':
jim=open('multiclipboardd','a')
jim.write(pyperclip.paste())
jim.write('n')
print('The text has been pasted to the multiclipboard!')
jim.close()

#This will read text from the multiclipboard
elif len(sys.argv)==2 and (sys.argv[1].lower())=='list':
kk=open('multiclipboardd')
print(kk.read())

#This will delete the text of the multiclipboard
elif len(sys.argv)==2 and (sys.argv[1].lower())=='delete':
jim=open('multiclipboardd','w')
jim.write('')
print('The clipboard has been cleared!')
#jim and kk are just variables

此文件的名称为Panda.py

在终端中调用python panda.py save应该将当前复制的文本保存到名为剪贴板的文件夹中,它确实如此!当我尝试调用它时,这工作得很好。

但是,当我尝试在终端中运行python panda.py list时,预计它会在屏幕上打印所有复制的单词,但它会删除所有单词!假设在调用python panda.py list之前,剪贴板有 110 个字母。然后调用python panda.py list后,它有0个字母!

为什么read()删除文件剪贴板中的所有字符?

每次使用"w"模式打开文件时,它都会覆盖文件中的所有现有数据。read()没有这样做。为防止这种情况,请每次都使用"a"模式打开文件。 希望这有帮助。

当您在程序顶部执行jim=open('multiclipboardd','w')时,它会截断原始文件并将其擦除。这就是您的文件被删除的原因。

此外,当您打开文件时,您应该.close()它们或使用上下文管理器。

正如 Amadan 所说,read()不会截断您的文件。

文件顶部的无条件jim=open('multiclipboardd','w')是。

如果您不希望它删除您的内容,请将'w'替换为'a'

最新更新