我正在做一个项目,在这个项目中我必须制作一个多剪贴板。以下是它将要执行的操作:
这个多剪贴板将贯穿终端。它将创建一个名为剪贴板的文件,并将所有复制的文本保存在那里。该人可以根据需要添加任意数量的复制文本,如果需要,他也可以清除多剪贴板。
代码如下:
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'