How do I copy a string to the clipboard on Windows using Python?

后端 未结 23 2800
温柔的废话
温柔的废话 2020-11-22 03:13

I\'m trying to make a basic Windows application that builds a string out of user input and then adds it to the clipboard. How do I copy a string to the clipboard using Pytho

相关标签:
23条回答
  • 2020-11-22 03:37

    You can use the excellent pandas, which has a built in clipboard support, but you need to pass through a DataFrame.

    import pandas as pd
    df=pd.DataFrame(['Text to copy'])
    df.to_clipboard(index=False,header=False)
    
    0 讨论(0)
  • 2020-11-22 03:37

    Use python's clipboard library!

    import clipboard as cp
    cp.copy("abc")
    

    Clipboard contains 'abc' now. Happy pasting!

    0 讨论(0)
  • 2020-11-22 03:38

    Looks like you need to add win32clipboard to your site-packages. It's part of the pywin32 package

    0 讨论(0)
  • 2020-11-22 03:39

    The snippet I share here take advantage of the ability to format text files: what if you want to copy a complex output to the clipboard ? (Say a numpy array in column or a list of something)

    import subprocess
    import os
    
    def cp2clip(clist):
    
        #create a temporary file
        fi=open("thisTextfileShouldNotExist.txt","w")
    
        #write in the text file the way you want your data to be
        for m in clist:
            fi.write(m+"\n")
    
        #close the file
        fi.close()
    
        #send "clip < file" to the shell
        cmd="clip < thisTextfileShouldNotExist.txt"
        w = subprocess.check_call(cmd,shell=True)
    
        #delete the temporary text file
        os.remove("thisTextfileShouldNotExist.txt")
    
        return w
    

    works only for windows, can be adapted for linux or mac I guess. Maybe a bit complicated...

    example:

    >>>cp2clip(["ET","phone","home"])
    >>>0
    

    Ctrl+V in any text editor :

    ET
    phone
    home
    
    0 讨论(0)
  • 2020-11-22 03:40

    I didn't have a solution, just a workaround.

    Windows Vista onwards has an inbuilt command called clip that takes the output of a command from command line and puts it into the clipboard. For example, ipconfig | clip.

    So I made a function with the os module which takes a string and adds it to the clipboard using the inbuilt Windows solution.

    import os
    def addToClipBoard(text):
        command = 'echo ' + text.strip() + '| clip'
        os.system(command)
    
    # Example
    addToClipBoard('penny lane')
    
    # Penny Lane is now in your ears, eyes, and clipboard.
    

    As previously noted in the comments however, one downside to this approach is that the echo command automatically adds a newline to the end of your text. To avoid this you can use a modified version of the command:

    def addToClipBoard(text):
        command = 'echo | set /p nul=' + text.strip() + '| clip'
        os.system(command)
    

    If you are using Windows XP it will work just following the steps in Copy and paste from Windows XP Pro's command prompt straight to the Clipboard.

    0 讨论(0)
  • 2020-11-22 03:40

    Code snippet to copy the clipboard:

    Create a wrapper Python code in a module named (clipboard.py):

    import clr
    clr.AddReference('System.Windows.Forms')
    from System.Windows.Forms import Clipboard
    def setText(text):
        Clipboard.SetText(text)
    
    def getText():
        return Clipboard.GetText()
    

    Then import the above module into your code.

    import io
    import clipboard
    code = clipboard.getText()
    print code
    code = "abcd"
    clipboard.setText(code)
    

    I must give credit to the blog post Clipboard Access in IronPython.

    0 讨论(0)
提交回复
热议问题