[英]copy then paste produces garbage in python terminal mac
我在Mac OS X(10.14.3)上使用文本编辑器(Sublime Text 3),在另一个窗口中是运行python(3.7)解释器的Terminal窗口。
我从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:MacPorts安装的10.14.3 python
未安装Tkinter:我不喜欢IDLE。
我使用的配置类似于您的配置,命令行+ Xcode,我尝试将您的代码从IDE复制并粘贴到命令行中,并且一切正常。 因此,我认为问题不在命令行内。 我将检查剪贴板(“查找器”->“编辑”->“显示剪贴板”)以查看代码是否被正确复制,它应该与在IDE中看起来完全一样。 如果不是,那么我建议注释掉不需要的代码,然后直接从命令行运行文件。
.py文件可以直接从命令行运行,而无需使用python3 path/to/file
命令启动python解释器,为此,您可以将文件直接拖到终端中,它将自动输入路径。 通过使用解释器shebang #!
可以进一步简化此操作#!
在.py文件本身中。 可以通过导入系统import sys
和print(sys.executable)
来找到解释器的路径。 这给出了解释器的路径,然后将shebang添加到该路径,并将其放在.py文件的顶部,对我来说,它看起来像这样: #!/Library/Frameworks/Python.framework/Versions/3.7/bin/python3
,但是由于是从MacPort安装的,因此可能有所不同。 通过使用shebang,只需输入文件路径即可在命令行中运行脚本。 例如,将文件拖到终端中,按Enter键,它将运行。 您还可以使用shift + up arrow
的终端快捷方式,然后按Enter键再次运行最后一个命令,从而节省了将文件拖到终端中的时间。
好,
最终发现,pboard进程已损坏。
修复的最佳方法是在活动监视器或终端中pboard
进程
使用
现在一切正常。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.