复制然后粘贴在python终端mac中产生垃圾

时间:2019-02-16 06:17:57

标签: python macos terminal copy-paste

我在Mac OS X(10.14.3)上使用文本编辑器(Sublime Text 3),在另一个窗口中是运行python(3.7)解释器的终端窗口。

我从Sublime(使用cmd + c)复制的代码是

def count_numbers():
    for i in range(10):
        if i % 3 == 0 : 
            print (i)

count_numbers()

但是当我将粘贴复制到终端时(包括打开python解释器的命令),我得到的输出是:

$ python
Python 3.7.2 (default, Dec 30 2018, 08:55:50) 
[Clang 10.0.0 (clang-1000.11.45.5)] on darwin
Type "help", "copyright", "credits" or "license" for more information.

[我在这里按 cmd + v ]

>>> def count_numbers():
...         return a * x + b
... z=[invcdf(random()) for i in range(10)]
  File "<stdin>", line 3
    z=[invcdf(random()) for i in range(10)]
    ^
SyntaxError: invalid syntax
>>>     if t2 is None:
  File "<stdin>", line 1
    if t2 is None:
    ^
IndentationError: unexpected indent
>>>         # print (i)
... 
>>> count_numbers()

这另一个混杂的代码来自我昨天写的一些python。从那时起,我已经使用了无数次复制/粘贴操作,所以我不明白为什么我最近的复制(cmd + v)会引导昨天的工作,并出现明显的缩进错误,今天的代码等等。

键入 command + shift + v 并不好:只是不同的垃圾内容。

到底是怎么回事?

Mac OS X:10.14.3 MacPorts安装的python
未安装Tkinter:我不喜欢IDLE。

2 个答案:

答案 0 :(得分:0)

我使用的配置类似于您的配置,命令行+ Xcode,我尝试将您的代码从IDE复制并粘贴到命令行中,并且一切正常。因此,我认为问题不在命令行内。我将检查剪贴板(“查找器”->“编辑”->“显示剪贴板”)以查看代码是否正确复制,它应该与在IDE中的外观完全一样。如果不是这样,我建议注释掉不需要的代码,然后直接从命令行运行文件。

.py文件可以直接从命令行运行,而无需使用命令python3 path/to/file启动python解释器,为此您可以将文件直接拖到终端中,它将自动输入其路径。通过使用.py文件本身中的解释器shebang #!,可以进一步简化此操作。可以通过导入系统import sysprint(sys.executable)找到解释器的路径。这给出了解释器的路径,然后将shebang添加到该路径并将其放在.py文件的顶部,对我来说,它看起来像这样:#!/Library/Frameworks/Python.framework/Versions/3.7/bin/python3,但是由于您是从MacPort安装的,因此不同。通过使用shebang,只需输入文件路径即可在命令行中运行脚本。即将文件拖到终端中,按Enter键,它就会运行。您也可以使用shift + up arrow的终端快捷方式,然后按Enter键再次运行最后一个命令,从而节省了将文件拖到终端的时间。

答案 1 :(得分:0)

好,

最终确定了Pboard进程已损坏。
修复的最佳方法是在活动监视器或终端中杀死pip freeze进程

使用

http://tips.applenws.com/copy-paste-not-working-on-mac-heres-how-to-fix-a-stuck-clipboard/2018/tips-tricks

现在一切正常。