代码之家  ›  专栏  ›  技术社区  ›  M.Hamel

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

  •  3
  • M.Hamel  · 技术社区  · 9 年前

    我在做一个项目,在这个项目中,我必须制作一个多夹板。下面是它的功能:

    然后把所有复制的文本保存在那里。用户可以添加任意数量的复制文本,如果愿意,还可以清除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
    

    此文件的名称为 熊猫py公司

    使命感 python panda.py save 确实如此!当我试着调用它时,它工作得非常好。

    python panda.py list 在终端中,预计它会在屏幕上打印所有复制的文字,但它会将其全部删除!假设在打电话之前 , 剪贴簿 蟒蛇熊猫。py列表 ,它有0个字母!

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

    3 回复  |  直到 9 年前
        1
  •  6
  •   Debanik Dawn    9 年前

    每次以“w”模式打开文件时,它都会覆盖文件中的所有现有数据。 read() 希望这有帮助。

        2
  •  5
  •   SH7890    9 年前

    当你这么做的时候 jim=open('multiclipboardd','w')

    此外,当你打开文件时,你应该 .close() 或使用 context manager.

        3
  •  1
  •   Nate    9 年前

    read() 不会截断您的文件。

    无条件的 jim=open('multiclipboardd','w')

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