复制然后粘贴在 python 终端 mac 中产生垃圾
copy then paste produces garbage in python terminal mac
我在 Mac OS X (10.14.3) 上使用文本编辑器 (Sublime Text 3),在另一个 window 终端 window 运行 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 我昨天写的。从那以后我用了无数次copy/paste,所以我不明白为什么我最近的副本(cmd + v)是在引导昨天的工作,并且有明显的缩进错误,今天的代码等等。
键入 command+shift+v 也好不到哪里去:只是不同的垃圾。
这到底是怎么回事?
Mac OS X : 10.14.3
python 由 MacPorts
安装
未安装 Tkinter:我不喜欢 IDLE。
我使用的配置与您的类似,命令行 + Xcode,我尝试将您的代码从 IDE 复制并粘贴到命令行中,一切都按预期工作。所以我相信问题不在命令行中。我会检查剪贴板(Finder -> Edit -> Show Clipboard)以查看代码是否被正确复制,它应该与 IDE 中的外观完全一样。如果没有,那么我会建议注释掉不需要的代码并直接从命令行 运行ning 文件。
.py 文件可以直接从命令行 运行 而无需使用命令 python3 path/to/file
启动 python 解释器,为此你可以直接将文件拖到终端中,然后它会自动进入它的路径。这可以通过在 .py 文件本身中使用解释器 shebang #!
来进一步简化。解释器的路径可以通过导入systemimport sys
和print(sys.executable)
找到。这给出了解释器的路径,然后将 shebang 添加到路径并将其放在 .py 文件的顶部,对我来说它看起来像这样:#!/Library/Frameworks/Python.framework/Versions/3.7/bin/python3
,但由于您是从 MacPort 安装的,它可能是不同的。 shebang 允许脚本在命令行中 运行 只需输入文件路径即可。即,将文件拖到终端中,按回车键,然后 运行s。您还可以使用 shift + up arrow
的终端快捷方式,然后再次按回车键进入 运行 最后一个命令,从而节省您不断将文件拖入终端的时间。
好的,
终于查明是pboard进程损坏了。
最好的修复方法是在 activity 监视器或终端
中终止 pboard
进程
使用
现在一切正常。
我在 Mac OS X (10.14.3) 上使用文本编辑器 (Sublime Text 3),在另一个 window 终端 window 运行 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 我昨天写的。从那以后我用了无数次copy/paste,所以我不明白为什么我最近的副本(cmd + v)是在引导昨天的工作,并且有明显的缩进错误,今天的代码等等。
键入 command+shift+v 也好不到哪里去:只是不同的垃圾。
这到底是怎么回事?
Mac OS X : 10.14.3
python 由 MacPorts
安装
未安装 Tkinter:我不喜欢 IDLE。
我使用的配置与您的类似,命令行 + Xcode,我尝试将您的代码从 IDE 复制并粘贴到命令行中,一切都按预期工作。所以我相信问题不在命令行中。我会检查剪贴板(Finder -> Edit -> Show Clipboard)以查看代码是否被正确复制,它应该与 IDE 中的外观完全一样。如果没有,那么我会建议注释掉不需要的代码并直接从命令行 运行ning 文件。
.py 文件可以直接从命令行 运行 而无需使用命令 python3 path/to/file
启动 python 解释器,为此你可以直接将文件拖到终端中,然后它会自动进入它的路径。这可以通过在 .py 文件本身中使用解释器 shebang #!
来进一步简化。解释器的路径可以通过导入systemimport sys
和print(sys.executable)
找到。这给出了解释器的路径,然后将 shebang 添加到路径并将其放在 .py 文件的顶部,对我来说它看起来像这样:#!/Library/Frameworks/Python.framework/Versions/3.7/bin/python3
,但由于您是从 MacPort 安装的,它可能是不同的。 shebang 允许脚本在命令行中 运行 只需输入文件路径即可。即,将文件拖到终端中,按回车键,然后 运行s。您还可以使用 shift + up arrow
的终端快捷方式,然后再次按回车键进入 运行 最后一个命令,从而节省您不断将文件拖入终端的时间。
好的,
终于查明是pboard进程损坏了。
最好的修复方法是在 activity 监视器或终端
pboard
进程
使用
现在一切正常。