Python没有内置剪贴板api,除了作为tkinterGUI的一部分,但是PyPI上有很多库都有。在
例如,使用^{},可以将任何字符串复制到剪贴板,如下所示:In[56]: import pyperclip
In[57]: pyperclip.copy(view_code)
但是您可以使用tkinter。根据您的平台,无论您使用的是控制台模式还是qtconsole会话等,这可能不起作用,或者可能需要弹出一个不需要的窗口,但是您可以尝试一下并看到:
^{pr2}$
如果你的设置需要你显示一个窗口(例如,我认为这会在Windows上的控制台模式会话中发生),你仍然可以在没有太多干扰的情况下完成。如果您感兴趣,请参阅this answer, suggested by J.Doe。在
但是,只写一个文件可能更简单、更有用:In[58}: with open('spam.txt', 'w') as f: f.write(view_code)
或者,由于您使用的是IPython,所以可以使用%save或其他各种魔术命令。(请看this question这样我就不必在这里一一回顾了。)
或者,有多个IPython插件的第三方实现可以为您提供剪贴板复制命令,比如this one(我刚刚在随机搜索中找到了它,所以我不支持它或任何东西……但它似乎可以工作):In[61]: %clip view_code
如果出于某种原因确实需要捕获print的输出,那么两种显而易见的方法是monkeypatch或shadow print,或者修补{}。例如:import builtins
import io
import sys
def print(*args, **kw):
if kw.get('file', sys.stdout) is sys.stdout:
buf = io.StringIO()
builtins.print(*args, **kw, file=buf)
pyperclip.copy(buf.getvalue())
builtins.print(*args, **kw)