Hướng dẫn how do you copy something in python? - làm thế nào để bạn sao chép một cái gì đó trong python?

246

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi chỉ cần một tập lệnh Python sao chép văn bản vào bảng tạm.

Sau khi tập lệnh được thực thi, tôi cần đầu ra của văn bản được dán vào một nguồn khác. Có thể viết một kịch bản Python làm công việc này không?

hỏi ngày 16 tháng 6 năm 2012 lúc 12:32Jun 16, 2012 at 12:32

3

Xem pyperclip. Ví dụ [lấy từ trang web pyperclip]:

import pyperclip
pyperclip.copy['The text to be copied to the clipboard.']
spam = pyperclip.paste[]

Ngoài ra, xem Xerox. Nhưng nó dường như có nhiều phụ thuộc hơn.

Vauhochzett

1.9961 Huy hiệu vàng15 Huy hiệu bạc32 Huy hiệu đồng1 gold badge15 silver badges32 bronze badges

Đã trả lời ngày 16 tháng 6 năm 2012 lúc 12:35Jun 16, 2012 at 12:35

Robertrobertrobert

32K8 Huy hiệu vàng52 Huy hiệu bạc72 Huy hiệu đồng8 gold badges52 silver badges72 bronze badges

4

Trên macOS, sử dụng

import subprocess 
data = "hello world"
subprocess.run["pbcopy", universal_newlines=True, input=data]
0 để gửi văn bản của bạn thành
import subprocess 
data = "hello world"
subprocess.run["pbcopy", universal_newlines=True, input=data]
1:

import subprocess 
data = "hello world"
subprocess.run["pbcopy", universal_newlines=True, input=data]

Nó sẽ sao chép "Hello World" vào bảng tạm.

Đã trả lời ngày 28 tháng 6 năm 2013 lúc 18:27Jun 28, 2013 at 18:27

Kyle Kkyle kkyle k

4.7548 Huy hiệu vàng30 Huy hiệu bạc45 Huy hiệu Đồng8 gold badges30 silver badges45 bronze badges

5

Để sử dụng các thư mục Python bản địa, hãy sử dụng:

import subprocess

def copy2clip[txt]:
    cmd='echo '+txt.strip[]+'|clip'
    return subprocess.check_call[cmd, shell=True]

trên Mac, thay vào đó:

import subprocess

def copy2clip[txt]:
    cmd='echo '+txt.strip[]+'|pbcopy'
    return subprocess.check_call[cmd, shell=True]

Sau đó sử dụng:

copy2clip['This is on my clipboard!']

để gọi chức năng.

Đã trả lời ngày 8 tháng 12 năm 2016 lúc 0:47Dec 8, 2016 at 0:47

BinyaminbinyaminBinyamin

5596 Huy hiệu bạc17 Huy hiệu đồng6 silver badges17 bronze badges

8

PyQt5:

from PyQt5.QtWidgets import QApplication
import sys

def main[]:
    app = QApplication[sys.argv]
    cb = QApplication.clipboard[]
    cb.clear[mode=cb.Clipboard ]
    cb.setText["Copy to ClipBoard", mode=cb.Clipboard]
    # Text is now already in the clipboard, no need for further actions.
    sys.exit[]

if __name__ == "__main__":
    main[]

Đã trả lời ngày 9 tháng 11 năm 2015 lúc 11:00Nov 9, 2015 at 11:00

AkshayakshayAkshay

4356 Huy hiệu bạc15 Huy hiệu Đồng6 silver badges15 bronze badges

2

GTK3:

#!/usr/bin/python3

from gi.repository import Gtk, Gdk


class Hello[Gtk.Window]:

    def __init__[self]:
        super[Hello, self].__init__[]
        clipboard = Gtk.Clipboard.get[Gdk.SELECTION_CLIPBOARD]
        clipboard.set_text["hello world", -1]
        Gtk.main_quit[]


def main[]:
    Hello[]
    Gtk.main[]

if __name__ == "__main__":
    main[]

Đã trả lời ngày 25 tháng 2 năm 2015 lúc 15:29Feb 25, 2015 at 15:29

Martin Thomamartin ThomaMartin Thoma

113K148 Huy hiệu vàng572 Huy hiệu bạc877 Huy hiệu đồng148 gold badges572 silver badges877 bronze badges

1

Thêm một câu trả lời để cải thiện: //stackoverflow.com/a/4203897/2804197 và //stackoverflow.com/a/25476462/1338797 [tkinter].

Tkinter là tốt, bởi vì nó được bao gồm trong Python [Windows] hoặc dễ cài đặt [Linux] và do đó đòi hỏi rất ít sự phụ thuộc cho người dùng cuối.

Ở đây tôi có một ví dụ "toàn diện", sao chép các đối số hoặc đầu vào tiêu chuẩn, vào bảng tạm và - khi không trên Windows - chờ người dùng đóng ứng dụng:

import sys

try:
    from Tkinter import Tk
except ImportError:
    # welcome to Python3
    from tkinter import Tk
    raw_input = input

r = Tk[]
r.withdraw[]
r.clipboard_clear[]

if len[sys.argv] < 2:
    data = sys.stdin.read[]
else:
    data = ' '.join[sys.argv[1:]]

r.clipboard_append[data]

if sys.platform != 'win32':
    if len[sys.argv] > 1:
        raw_input['Data was copied into clipboard. Paste and press ENTER to exit...']
    else:
        # stdin already read; use GUI to exit
        print['Data was copied into clipboard. Paste, then close popup to exit...']
        r.deiconify[]
        r.mainloop[]
else:
    r.destroy[]

Điều này giới thiệu:

  • Nhập TK trên PY2 và PY3
  • import subprocess 
    data = "hello world"
    subprocess.run["pbcopy", universal_newlines=True, input=data]
    
    2 và
    import subprocess 
    data = "hello world"
    subprocess.run["pbcopy", universal_newlines=True, input=data]
    
    3 Khả năng tương thích
  • cửa sổ rễ "usingingiding" tk khi cần
  • Chờ đợi lối ra trên Linux theo hai cách khác nhau.

Đã trả lời ngày 4 tháng 11 năm 2015 lúc 13:35Nov 4, 2015 at 13:35

Tomasz Gandortomasz GandorTomasz Gandor

7.5652 Huy hiệu vàng56 Huy hiệu bạc52 Huy hiệu Đồng2 gold badges56 silver badges52 bronze badges

3

Tôi thử clipboard này 0,0.4 và nó hoạt động tốt.

//pypi.python.org/pypi/clipboard/0.0.4

import clipboard
clipboard.copy["abc"]  # now the clipboard content will be string "abc"
text = clipboard.paste[]  # text will have the content of clipboard

Đã trả lời ngày 28 tháng 6 năm 2016 lúc 6:34Jun 28, 2016 at 6:34

Du Pengdu PengDu Peng

3232 Huy hiệu bạc3 Huy hiệu Đồng2 silver badges3 bronze badges

2

Đây là phiên bản thay đổi của câu trả lời của @martin Thoma cho GTK3. Tôi thấy rằng giải pháp ban đầu dẫn đến quá trình không bao giờ kết thúc và thiết bị đầu cuối của tôi được treo khi tôi gọi kịch bản. Thay đổi kịch bản thành phần sau đã giải quyết vấn đề cho tôi.GTK3. I found that the original solution resulted in the process never ending and my terminal hung when I called the script. Changing the script to the following resolved the issue for me.

#!/usr/bin/python3

from gi.repository import Gtk, Gdk
import sys
from time import sleep

class Hello[Gtk.Window]:

    def __init__[self]:
        super[Hello, self].__init__[]
        
        clipboardText = sys.argv[1]
        clipboard = Gtk.Clipboard.get[Gdk.SELECTION_CLIPBOARD]
        clipboard.set_text[clipboardText, -1]
        clipboard.store[]


def main[]:
    Hello[]
    
    

if __name__ == "__main__":
    main[]

Bạn có thể sẽ muốn thay đổi bảng điều chỉnh nào được gán cho, trong tập lệnh này, nó được gán cho tham số mà tập lệnh được gọi với.

Trên cài đặt mới của Ubuntu 16.04, tôi thấy rằng tôi phải cài đặt gói

import subprocess 
data = "hello world"
subprocess.run["pbcopy", universal_newlines=True, input=data]
4 để nó hoạt động mà không có lỗi nhập mô -đun.

Tế bào thần kinh

4.6244 Huy hiệu vàng32 Huy hiệu bạc53 Huy hiệu Đồng4 gold badges32 silver badges53 bronze badges

Đã trả lời ngày 25 tháng 4 năm 2016 lúc 11:34Apr 25, 2016 at 11:34

Chương trìnhProgrogramsterProgramster

Huy hiệu vàng 11,9k88 gold badges46 silver badges54 bronze badges

Sao chép hoạt động như thế nào trong Python?

Một bản sao nông xây dựng một đối tượng hợp chất mới và sau đó [trong phạm vi có thể] chèn các tham chiếu vào nó vào các đối tượng được tìm thấy trong bản gốc.Một bản sao sâu xây dựng một đối tượng hợp chất mới và sau đó, đệ quy, chèn các bản sao vào nó của các đối tượng được tìm thấy trong bản gốc.. A deep copy constructs a new compound object and then, recursively, inserts copies into it of the objects found in the original.

Tại sao chúng ta cần Copy [] trong Python?

Để sao chép các đối tượng có thể thay đổi như danh sách hoặc từ điển, chúng tôi sử dụng phương thức Copy [].Khi được gọi trên bất kỳ đối tượng nào, phương thức Copy [] sẽ tạo một đối tượng mới có cùng dữ liệu với đối tượng gốc và trả về một tham chiếu cho nó., we use copy[] method. When invoked on any object, the copy[] method creates a new object with the same data as the original object and returns a reference to it.

Tại sao COPY [] không hoạt động Python?

Danh sách Python sao chép không hoạt động.Lý do chính tại sao danh sách.Phương thức Copy [] có thể không hoạt động cho bạn là vì bạn cho rằng nó tạo ra một bản sao sâu khi trong thực tế, nó chỉ tạo ra một bản sao nông của danh sách.you assume that it creates a deep copy when, in reality, it only creates a shallow copy of the list.

Chủ Đề