我正在做一个我必须制作多层板的项目。以下是它的所作所为:
这个多层板将贯穿终端。它将创建一个名为 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
此文件的名称为 Panda.py
在终端中呼叫python panda.py save
应该将当前复制的文本保存到名为 clipboardd 的文件夹中,它确实存在!当我尝试调用它时,这完全正常。
然而,当我尝试在终端中运行python panda.py list
时,预计会在屏幕上打印复制的单词,但它会全部删除它们!假设在调用python panda.py list
之前, clipboardd 有110个字母。然后在调用python panda.py list
后,它有0个字母!
为什么read()
删除文件 clipboardd 中的所有字符?
答案 0 :(得分:6)
每次用' w'打开文件模式,它会覆盖文件中的所有现有数据。
read()
不是这样做的。要防止出现这种情况,请使用' a'打开文件。每次模式。
希望这会有所帮助。
答案 1 :(得分:5)
当您在程序顶部执行jim=open('multiclipboardd','w')
时,它会截断原始文件并将其删除。这就是为什么你要归档的原因。
此外,当您打开文件时,您应该.close()
他们或使用context manager.
答案 2 :(得分:1)
正如Amadan所说,read()
并未截断您的文件。
文件顶部的无条件jim=open('multiclipboardd','w')
为。
如果您不希望它删除您的内容,请将'w'
替换为'a'