簡體   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