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

M.H*_*mel 2 python macos sys python-3.x python-3.6

我正在做一个我必须制作多层板的项目.这就是它的作用:

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

这是代码:

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
Run Code Online (Sandbox Code Playgroud)

该文件的名称是Panda.py

python panda.py save在终端中调用应该将复制的文本保存到名为clipboardd的文件夹中,它确实存在!当我尝试调用它时,这完全正常.

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

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

Deb*_*awn 6

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


SH7*_*890 5

当您jim=open('multiclipboardd','w')在程序的顶部执行操作时,它会截断原始文件并将其删除.这就是为什么你的文件被删除了.

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