为什么read()函数删除我的文件中的所有数据?
问题描述:
我正在做一个项目,我不得不制作一个多色滑板。这是它会做的:为什么read()函数删除我的文件中的所有数据?
这个multiclipboard将贯穿终端。它将创建一个名为的剪贴板并将所有复制的文本保存在那里。该人可以添加尽可能多的复制文本,如果他愿意,他也可以清除多滑脚板。
下面的代码:
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
之前,剪贴板有110个字母。然后在拨打python panda.py list
后,它有0个字母!
为什么read()
删除文件中的所有字符clipboardd?
答
你打开你的文件,“W”模式每一次,它会覆盖文件中的所有现有数据。 read()
没有这样做。为防止出现这种情况,请每次以'a'模式打开文件。 希望这有助于。
答
当您在程序的顶部执行jim=open('multiclipboardd','w')
时,它会截断原始文件并将其擦除。这就是为什么你的文件被擦除。
此外,当你打开文件,你应该.close()
,或用context manager.
答
正如Amadan所说,read()
不会截断您的文件。
无条件jim=open('multiclipboardd','w')
位于文件顶部。
如果你不希望它删除您的内容,与'a'
'阅读()'不截断你的文件替换
'w'
。文件顶部的无条件'jim = open('multiclipboardd','w')'是。 – Amadan'jim = open('multiclipboardd','w')'预计将删除数据!而且,只有当一个人调用'python panda.py delete'时,Python才会到达'jim = open('multiclipboardd','w')'' –
代码的第三行是什么?在两个'import'语句之后? – Amadan