繁体   English   中英

Emacs中Notepad ++的Python脚本错误

[英]Python Script from Notepad++ Error in Emacs

我有一个大型的Python脚本库,是用Notepad ++和Pycharm编写的,我想开始用Emacs运行它们。 但是,有关这些文件的某些信息导致Emacs中出现语法错误。

作为最小的工作示例,我将以下内容保存在Notepad ++中:

print('hello world')

然后,我在Emacs 22.3.1中打开它,然后转到Python-> Start Interpreter。 我键入Cc Cc,然后在解释器屏幕中收到以下错误:

File "/tmp/py110681cL", line 1
    print('hello world')
^
SyntaxError: invalid syntax

这使得它看起来像是在行的开头正在读取的一个缩进,但是我在Emacs文本编辑器窗口中看不到它。 我试图清理空白无济于事。

如果我在Emacs中创建一个新文件并手动键入相同的代码,则按照此过程运行就可以了。

我不想手动重新输入所有先前存在的脚本,那么如何删除此幻像空间? Google没有帮助...

更新:Notepad ++用[CR] [LF]代表了我的新行。 在Notepad ++中删除回车符允许它在Emacs中运行。

问题似乎是notepad ++使用\\r\\n (回车+换行)表示换行符,而Emacs将\\r解释为无效的缩进(因为它是空格)。

为了防止将来发生这种情况,可以转到Settings -> Preferences... -> New Document -> Format (Line ending)然后选择Unix/OSX \\r\\n是Windows表示换行符的方式,在Unix / OSX / Linux中为\\n (旧Mac只是\\r )。

要修改现有文件,您可以执行以下操作:

find /path/to/py/files -type f -iname '*.py' -exec sed $'s/\r$//' "{}" +;

(在/path/to/py/files查找所有.py文件,并在它们上执行sed $'s/\\r$//' (替换所有\\r ,然后在行尾没有任何内容)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM