2009-12-01 11 views

उत्तर

7

न्यू जवाब:

This page पता चलता है:

सभी मैक ओएस एक्स संस्करण

अन्य मैक मॉड्यूल के लिए कार्यान्वयन (MacSharedClipboard.py, लिस्टिंग 4 में) पर दो कमांड के शीर्ष पर क्लिपबोर्ड इंटरफ़ेस लागू करता है -लाइन प्रोग्राम जिसे पीबीसीपी कहा जाता है (जो क्लिपबोर्ड को क्लिपबोर्ड में कॉपी करता है) और पीबीपीस्ट ( क्लिपबोर्ड में जो भी टेक्स्ट चिपकाता है) चिपकाता है। उपसर्ग "पीबी" "पेस्टबोर्ड" के लिए है, क्लिपबोर्ड के लिए मैक शब्द।

पुराना जवाब:

जाहिर है तो:

http://code.activestate.com/recipes/410615/

इसे कैसे करना प्रदर्शन एक सरल स्क्रिप्ट है।

संपादित करें: बस एहसास हुआ कि यह कार्बन पर निर्भर करता है, इसलिए आदर्श नहीं हो सकता है ... आप इसका उपयोग करने के लिए थोड़ा सा निर्भर करता है।

+0

मैं का उपयोग करने का कभी नहीं सोचा था प्राप्त करने के लिए एक कमांड लाइन उपकरण। बिल्कुल सही, धन्यवाद –

+0

वह कोड नमूना यूनिकोड तारों को सही तरीके से संभाल नहीं करता है। मैंने एक अलग जवाब के रूप में एक यूनिकोड-जागरूक समाधान प्रदान किया है। –

14

निम्न कोड उपयोग PyObjC (http://pyobjc.sourceforge.net/)

from AppKit import NSPasteboard, NSArray 

pb = NSPasteboard.generalPasteboard() 
pb.clearContents() 
a = NSArray.arrayWithObject_("hello world") 
pb.writeObjects_(a) 

explained in Cocoa documentation के रूप में, नकल तीन कदम की आवश्यकता:

  • मिल पेस्टबोर्ड
  • स्पष्ट यह
  • यह
भरने

आप ऑब्जेक्ट की सरणी के साथ पेस्टबोर्ड भरें (यहां a में केवल एक स्ट्रिंग है)।

2

यदि आप सिर्फ मैक क्लिपबोर्ड में टेक्स्ट रखना चाहते हैं, तो आप शैल के pbcopy कमांड का उपयोग कर सकते हैं।

+0

यदि यह एक सुपर-शॉर्ट पायथन कमांड है, तो आप कमांड के आउटपुट को इस तरह पीबीसीपी पर पाइप कर सकते हैं: पायथन-सी "प्रिंट 'हाय'" | pbcopy। आप लगातार कमांड का एक गुच्छा भी शामिल कर सकते हैं: पायथन-सी 'आयात समय, sys; sys.stdout.write (str (int (time.time()))) '| pbcopy। यह क्लिपबोर्ड पर पिछली नई लाइन के बिना यूनिक्स समय की प्रतिलिपि बनाता है। –

11

एक आसान तरीका:

cmd = 'echo %s | tr -d "\n" | pbcopy' % str 
os.system(cmd) 

एक पार मंच तरीका:
https://stackoverflow.com/a/4203897/805627

from Tkinter import Tk 
r = Tk() 
r.withdraw() 
r.clipboard_clear() 
r.clipboard_append('i can has clipboardz?') 
r.destroy() 
+3

यह मेरे ओएस एक्स 10.8 पर काम नहीं कर रहा है। – Vojto

+1

कोड ब्लॉक # 1 संभवतः काम नहीं करता है अगर क्लिपबोर्ड पर लिखा जाने वाला टेक्स्ट यूनिकोड या शैल कैरेक्टर जैसा है। या & कोड ब्लॉक # 2 ओएस एक्स पर एक अतिरिक्त डॉक आइकन बनाता है। मैंने इस प्रश्न का अपना उत्तर प्रदान किया है जिसमें इन मुद्दों का कोई अधिकार नहीं है। –

46

मैक उसे क्लिपबोर्ड पर यूनिकोड स्ट्रिंग लिखने के लिए कैसे:

import subprocess 

def write_to_clipboard(output): 
    process = subprocess.Popen(
     'pbcopy', env={'LANG': 'en_US.UTF-8'}, stdin=subprocess.PIPE) 
    process.communicate(output.encode('utf-8')) 

कैसे मैक क्लिपबोर्ड से यूनिकोड स्ट्रिंग पढ़ने के लिए:

import subprocess 

def read_from_clipboard(): 
    return subprocess.check_output(
     'pbpaste', env={'LANG': 'en_US.UTF-8'}).decode('utf-8') 

पायथन 2.7 और पायथन 3.4 दोनों पर काम करता है।

+1

मुझे नहीं पता कि यह इतना छोटा प्यार क्यों प्राप्त करता है, यह इस पृष्ठ पर अब तक का सबसे सुरुचिपूर्ण और विश्वसनीय तरीका है – zsero

+1

धन्यवाद क्यों। मुझे क्लिपबोर्ड के माध्यम से जापानी पाठ को धक्का देने के लिए इस फ़ंक्शन को लिखना आवश्यक था, इसलिए मुझे इसे यूनिकोड के साथ काम करना पड़ा। –

+0

उत्कृष्ट। जेएसटीओआर पीडीएफ फाइलों से निष्कर्षों की सफाई के लिए उपयोगिता समारोह में बहुत उपयोगी; धन्यवाद। – cphlewis

4

मुझे पता है कि यह एक पुरानी पोस्ट है, लेकिन मुझे इस समस्या का एक बहुत ही सुरुचिपूर्ण समाधान मिला है।

नामक लाइब्रेरी है PyClip, जो https://github.com/georgefs/pyclip-copycat पर पाया जा सकता है।

वाक्य रचना बहुत सरल (Github रेपो से उदाहरण) है:

import clipboard 

# copy some text to the clipboard 
clipboard.copy('blah blah blah') 

# get the text currently held in the clipboard 
text = clipboard.paste() 

एक बार आप clipboard.copy('foo') उत्तीर्ण कर ली है आप कर सकते हैं बस Cmd + V पाठ

संबंधित मुद्दे