1. 程式人生 > >解決python指令碼在window編輯後linux不能執行的問題

解決python指令碼在window編輯後linux不能執行的問題

如題,python指令碼在windows編輯後,在linux下執行提示 /usr/bin/python^M: bad interpreter: No such file or directory 

看到^M應該是隱藏字元,原因就是windows行尾和liunx行尾識別符號不一致,不同系統間行尾表示如下:

<strong>不同系統間的行尾表示
UNIX格式,每行的行尾都是用一個0x0a字元(換行字元LF)表示的,
而在WINDOWS/DOS下每行的行尾都是用0x0d 0x0a兩個字元(回車字元CR,換行字元LF)表示的,
MAC機,每行的行尾都是0x0d字元表示,即回車字元CR。
<span style="color:#3333FF;">(經我用winhex檢視,確實如此——yockie注)</span>
在很多計算機語言中, <CR>表示為字元或字串是\r, 而<LF>表示為字元或字元中是\n.
而在printf這樣的函式中, 如果你出現一個\n, 它卻代表了一個邏輯上的意義, 即它代表在本地系統上的那種回車換行, 所以它在UNIX上只是<LF>, 但如果你在DOS上用諸如Truboc程式設計的話它輸出的是<CR><LF>
<strong>所以不同系統之間傳輸交換檔案的時候,會出現問題;</strong>
1)Unix或linux上有個小工具, 專門在兩種檔案格式之間進行轉換, 叫unix2dos, dos2unix.或在
vim中, 如果你想把一個檔案存為另一種檔案格式, 只需:set fileformat=unix或等號後面是dos, mac即可, 接下來的存檔動作就會自動把你的檔案存為指定平臺的格式.
2)在UltraEdit的 File->Conversions(有些版本是在Format -> Convert to..)選單中, 有三個子選單項就是專供你在各種文字格式之間轉換的.
必須先將UNIX文字格式轉換為DOS格式的。UltraEdit的FILE選單中提供了對單個檔案進行這種轉換的能力,也可以實現批量轉換。在UE中選擇Search | Search in files選單,在Find框中填寫^n(表示UNIX檔案中的回車換行符號),在Replace with中輸入^p(表示DOS檔案中的回車換行符號),全部替換後,就可以實現批量替換了。
不同系統間ftp使用注意事項
一些ftp的客戶端程式會自動進行各個平臺的文字檔案格式轉換. 所以要注意你在ftp中用ls看看到的檔案大小未必是你下載下來的檔案大小. 上傳過程也是一樣.
如果你不想ftp這樣自作主張只要用bin命令即可. 它會告訴ftp進行逐位元組的二進位制模式傳輸.
在winodows編輯後,導致liunx下檔案格式錯亂,解決方法

1)在windows上,用UltraEdit或EditPlus等工具先將指令碼編碼轉換,再放到Linux中執行。轉換方式如下(UltraEdit):File-->Conversions-->DOS->UNIX即可

2)在linux上直接替換把不可見字元去掉 sed -i 's/^M//g'  filename (注意^M 在linux 下寫法 按^M 是回車換行符,輸入方法是按住CTRL+v,鬆開v,按m)

3)在liunx上轉換檔案的格式vim filename   :set ff可以檢視檔案格式會顯示fileformat=mac dos 或者unix等等 直接 :set ff=unix :wq儲存退出即可。

相關推薦

解決python指令碼window編輯linux不能執行的問題

如題,python指令碼在windows編輯後,在linux下執行提示 /usr/bin/python^M: bad interpreter: No such file or directory  看到^M應該是隱藏字元,原因就是windows行尾和liunx行尾識別符號不

解決window編輯檔案Linux顯示 ^M 亂碼

在windows環境編輯一個檔案,準備在Linux中使用。但是開啟檔案發現 出現 ^M 這種亂碼。   這是由於windows和Linux對回車符定義不同造成的。windows回車是 0XOD 0X0A ,而Linux對回車符的定義時 0X0A。不統一就導致了這種亂碼。下面是

python指令碼實現本地或遠端執行命令

功能:1、執行本地shell命令,執行完成後獲取結果2、執行本地shell命令,執行中實時獲取輸出結果3、執行遠端shell命令,執行完成後獲取結果4、執行遠端shell命令,執行中實時獲取輸出結果 實際操作:1、安裝paramiko apt-get install python3-pip libev

python指令碼像普通程式一樣執行

有些時候像執行其他程式一樣執行python程式(也叫做指令碼),而不是顯式使用python直譯器。在UNIX中有個標準的實現方法:在指令碼首行前面加上#!(叫做pound bang或者shebang),在其後加上用於解釋指令碼的程式的絕對路徑(在這裡,用於解釋程式碼的程式是python)

解決關於spring boot 部署執行404問題

如果是和主程式同意目錄下,不會出現此問題,此問題只出現在和主程式class不在同一包下 @SpringBootApplication @ComponentScan(basePackages = {"com.路徑.*"}) public class DemoApplication {

解決Javascript中$(window).resize()多次執行(轉)

https://www.cnblogs.com/shuilangyizu/p/6816756.html 有些時候,我們需要在瀏覽器視窗發生變化的時候,動態的執行一些操作,比如做自適應頁面時的適配。這個時候,我們需要在視窗拖動的時候去執行程式碼。但是有些時候,執行的操作比較複雜,我們只希望在視窗拖動完畢之後,

python 指令碼window爆破exe

直接放程式碼   from subprocess import Popen,PIPE f = open('basic.txt','w'); path = 'xxx.exe' for i in range(範圍):     p = Popen (path,stdin = PI

Python指令碼如何生成Windows可執行檔案.exe

作者是   Python是一種簡單而強大的程式語言,適用於編寫指令碼,甚至於應用程式的開發。Python可用的各種GUI包使得利用Python編寫全功能的應用變為可能。這很好,但你有沒有想過將你編寫的Python指令碼轉化為可執行檔案?這似乎是一個很讚的主意,有許

python指令碼在Windows計劃任務執行問題

最近在新增計劃任務時py指令碼總不能正確執行,最後終於找到了,感謝偉大的Google,但是和原博主一樣不知道為什麼,以後慢慢再解決吧。解決方案如下:只需要在建立任務中的“操作”選項卡里面,新建操作,“程式或指令碼”中只填指令碼名稱,在“起始於”裡面填寫指令碼所在的路徑。儲存

python指令碼打包成.exe可執行檔案

安裝 pyinstaller pip install pyinstaller 在檔案所在目錄執行: pyinstaller -F mytest.py 手動把用到的相關資料夾移動至 .exe同級目錄下 在.exe當前目錄下執行 ./mytest.exe

手把手教你:解決pycharm安裝不能執行python指令碼的問題

問題:pycharm安裝後不能執行python指令碼的問題 原因:pycharm沒有設定解析器 解決方法: 開啟pycharm->File->Settings->Project Interpreter->設定為你的python路徑,我的是:C:\Py

解決Linux執行Python指令碼顯示“: 沒有那個檔案或目錄”的問題

我猜不少人都遇到過類似的問題: 在Windows下寫好了一個python指令碼,執行沒問題 但放到Linux系統下就必須在命令列前加上一個python直譯器才能執行 指令碼開頭的註釋行已經指明瞭直譯器的路徑,也用chmod給了執行許可權,但就是不能直接執行指令碼。 比如這個指令碼: #!/usr/bin/

解決Oracle缺少動態連結庫cannot open shared object file: No such file o;解決 Linuxpython指令碼執行無問題,配置crontab定時任務報錯

注:該問題的本質是:缺少動態連結庫 20181030更: 在另一臺伺服器再次遇到類似的問題,也是直接執行python指令碼無問題,在crontab中報錯: ImportError: libclntsh.so.11.1: cannot open shared ob

解決斷開SSH連線Python指令碼停止執行的方法

用ssh登入遠端伺服器執行指令碼,發現斷開ssh連線後程序就會停止執行,百度一下,產生的原因簡單來說就是,斷開ssh連線時產生的結束通話訊號(SIGHUP) 訊號會終止程式的執行。 解決的方法有兩種: 1.讓程序忽略 SIGHUP 訊號 2.讓程式執行在不屬於ssh的程

Windows下執行python指令碼報錯“ImportError: No Module named ...”的解決方法

之前遇到一個問題,在Pycharm或IPython之類的IDE上執行指令碼正常,但是直接執行或cmd命令列執行的時候報了模組未能找到的 誤——ImportError: No Module named ...。 這是啥情況? Python在啟動直譯器(Interpreter)的時候

Linux 執行多行命令的方法與區別(解決supervisor啟動使用GPU的python服務)

在很多情況下,我們需要一次性執行多條命令。比如我在用supervisor啟動python服務的時候就有類似的需求。 對於我的例子背景是通過supervisor監控python在python 35環境下的GPU使用的服務,其中分三個塊:python35環境的需求、GPU服務的使用、服務自動重啟。當

linux執行python指令碼的兩種方式

1、直接使用python xxxx.py執行。其中python可以寫成python的絕對路徑。使用which python進行查詢。 2、在檔案的頭部(第一行)寫上#!/usr/bin/python2.7,這個地方使用python的絕對路徑,就是上面用which python查詢來的結果

inotify+rsync實現實時同步(附解決crontab中無法執行python指令碼的問題)

1.準備環境 # 系統支援的話,下面的目錄就會存在 ls /proc/sys/fs/inotify/ rpm -qa inotify-tools yum -y install inotify-tools 2.inotifywait監控目錄狀態變化 /usr/bin/inotif

Linux執行指令碼命令提示No such file or directory錯誤的解決辦法

首先了解下基礎知識: python指令碼中的#!/usr/bin/python 估計有不少人注意過一些python指令碼開頭有這麼行東東: #!/usr/bin/python 它是用來幹嘛的?貌似沒有它對指令碼功能也沒啥影響。它是用來指定用什麼直譯器執行指令

java呼叫Linux執行Python爬蟲,並將資料儲存到elasticsearch--(一、環境指令碼搭建)

java呼叫Linux執行Python爬蟲,並將資料儲存到elasticsearch中 一、以下部落格程式碼使用的開發工具及環境如下: 1、idea: 2、jdk:1.8 3、elasticsearch:5.2.0 4、Linux 5、Python 6、maven 二、maven座標: <!--jav