Windows下Python3腳本傳到Linux下./example.py執行失敗

1. 背景

大多數情況下通過pycharm編寫Python代碼,編寫調試完,到Linux下發布執行。

以example.py腳本為例

#! /usr/bin/env python3
#! -*- encoding: utf-8 -*-
def test(x,y):
? ? x=int x
? ? y=int y
? ? c=x+y
? ? return c
if _name_=="__main__":
? ? print(test(2,6)

在Linux下執行python3 example.py成功但./example.py執行報錯。

偶然發現vi example.py打開文件,底部會顯示這個文件是dos格式的。

突然想起來,windows和Linux下文件的換行符不一樣。

使用dos2unix工具轉換下./example.py可以執行了。

2. 疑惑

Windows下Python3腳本傳到Linux下,為什么python3 example.py成功?./example.py執行報錯?

3. 分析

先看下python3 example.py執行,指定Python3解釋器,猜測下Python3能在Linux下執行Windows的Python腳本,也就是說Python3解釋器自動將dos下換行符(/r/n)轉換或解析為unix下換行符(/r)。

./example.py執行,是根據文件開頭指定的Python解釋器來執行(#! /usr/bin/env? python3)。在指定解釋器前,要先能夠識別這個文件的換行符,此次執行失敗就是換行符搞的鬼。

做個實驗:僅僅把(#! /usr/bin/env? python3)這一行在Linux下刪除后,重新編寫,并換行。再次執行驗證是否可行。

實驗失敗了。

有兩點結論:

1) 文件換行符是dos還是unix,是以文件為粒度的,不是某一行來決定的。

這一點可以知道,./example.py執行是操作系統先識別文件換行符,才能調用Python解釋器。

2) Python3 example.py是不需要操作系統來識別文件換行符,直接Python解釋器來處理。



喜歡的朋友記得點贊、收藏、關注哦!!!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/78128.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/78128.shtml
英文地址,請注明出處:http://en.pswp.cn/web/78128.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

當MCP撞進云宇宙:多芯片封裝如何重構云計算的“芯“未來?

當MCP撞進云宇宙:多芯片封裝如何重構云計算的"芯"未來? 2024年3月,AMD發布了震撼業界的MI300A/B芯片——這顆為AI計算而生的"超級芯片",首次在單封裝內集成了13個計算芯片(包括3D V-Cache緩存、CDNA3 GPU和Zen4 CPU),用多芯片封裝(Multi-Chip Pac…

用定時器做微妙延時注意事項

注意定時器來著APB1還是APB2,二者頻率不一樣,配置PSC要注意 (1)高級定時器timer1, timer8以及通用定時器timer9, timer10, timer11的時鐘來源是APB2總線 (2)通用定時器ti…

三類思維坐標空間與時空序位信息處理架構

三類思維坐標空間與時空序位信息處理架構 一、靜態信息元子與元組的數據結構設計 三維思維坐標空間定義 形象思維軸(x):存儲多媒體數據元子(圖像/音頻/視頻片段) 元子結構:{ID, 數據塊, 特征向量, 語義…

spring boot中@Validated

在 Spring Boot 中,Validated 是用于觸發參數校驗的注解,通常與 ??JSR-303/JSR-380??(Bean Validation)提供的校驗注解一起使用。以下是常見的校驗注解及其用法: ?1. 基本校驗注解?? 這些注解可以直接用于字段…

Hadoop 單機模式(Standalone Mode)部署與 WordCount 測試

通過本次實驗,成功搭建了 Hadoop 單機環境并運行了基礎 MapReduce 程序,為后續分布式計算學習奠定了基礎。 掌握 Hadoop 單機模式的安裝與配置方法。 熟悉 Hadoop 環境變量的配置及 Java 依賴管理。 使用 Hadoop 自帶的 WordCount 示例程序進行簡單的 …

歷史數據分析——運輸服務

運輸服務板塊簡介: 運輸服務板塊主要是為貨物與人員流動提供核心服務的企業的集合,涵蓋鐵路、公路、航空、海運、物流等細分領域。該板塊具有強周期屬性,與經濟復蘇、政策調控、供需關系密切關聯,尤其是海運領域。有不少國內股市的鐵路、公路等相關的上市公司同時屬于紅利…

openEuler 22.03 安裝 Mysql 5.7,TAR離線安裝

目錄 一、檢查系統是否安裝其他版本Mariadb數據庫二、環境檢查2.1 必要環境檢查2.2 在線安裝(有網絡)2.3 離線安裝(無網絡) 三、下載Mysql2.1 在線下載2.2 離線下載 四、安裝Mysql五、配置Mysql六、開放防火墻端口七、數據備份八、…

噴泉碼技術在現代物聯網中的應用 設計

噴泉碼技術在現代物聯網中的應用 摘 要 噴泉碼作為一種無速率編碼技術,憑借其動態生成編碼包的特性,在物聯網通信中展現出獨特的優勢。其核心思想在于接收端只需接收到足夠數量的任意編碼包即可恢復原始數據,這種特性使其特別適用于動態信道和多用戶場景。噴泉碼的實現主要…

GZIPInputStream 類詳解

GZIPInputStream 類詳解 GZIPInputStream 是 Java 中用于解壓縮 GZIP 格式數據的流類,屬于 java.util.zip 包。它是 InflaterInputStream 的子類,專門處理 GZIP 壓縮格式(.gz 文件)。 1. 核心功能 解壓 GZIP 格式數據(RFC 1952 標準)自動處理 GZIP 頭尾信息(校驗和、時…

網絡編程——TCP和UDP詳細講解

文章目錄 TCP/UDP全面詳解什么是TCP和UDP?TCP如何保證可靠性?1. 序列號(Sequence Number)2. 確認應答(ACK)3. 超時重傳(Timeout Retransmission)4. 窗口控制(Sliding Win…

性能測試工具篇

文章目錄 目錄1. JMeter介紹1.1 安裝JMeter1.2 打開JMeter1.3 JMeter基礎配置1.4 JMeter基本使用流程1.5 JMeter元件作用域和執行順序 2. 重點組件2.1 線程組2.2 HTTP取樣器2.3 查看結果樹2.4 HTTP請求默認值2.5 JSON提取器2.6 用戶定義的變量2.7 JSON斷言2.8 同步定時器&#…

rabbitMQ如何確保消息不會丟失

rabbitmq消息丟失的三種情況 生產者將消息發送到RabbitMQ的過程中時,消息丟失。消息發送到RabbitMQ,還未被持久化就丟失了數據。消費者接收到消息,還未處理,比如服務宕機導致消息丟失。 解決方案 生產者發送過程中,…

Beetle-RP2350 擴展板設計

Beetle-RP2350 擴展板設計 本文介紹了 DFRobot Beetle RP2350 開發板的擴展板設計,包括參數特點、效果展示、原理圖、實物驗證、工程測試等,為 RP2350 系列產品的開發提供了便捷。 PCB 工程詳見:Beetle-RP2350擴展板 - 立創開源硬件平臺 . …

2025年一加7pro刷twpr / magisk / kali nethunter教程+資源下載+避坑指南

從二手市場500淘了一個一加7pro 12+256 ,根據網上教程刷機但很多坑,折騰一周后搞定,記錄下給后人避坑 資源下載:鏈接:https://pan.quark.cn/s/c16b972509f2 提取碼:mUW7 本文是主流程+避坑指南,沒有基礎的需要手把手教學的shell都不會的就別看了,直接放棄或者tb找人花錢…

java HashMap,高效 哈希

java HashMap 有獨特的設計。 哈希表數組的每個位置是一個哈希桶&#xff0c;里面由鏈表或紅黑樹實現。&#xff08;> 8 或 < 6 的變化時&#xff0c;避免頻繁切換&#xff09; 容量&#xff08;capacity&#xff09;&#xff1a; 哈希表中桶&#xff08;bucket&#xf…

【業務領域】計算機網絡基礎知識

《計算機網絡方面有哪些書籍值得推薦&#xff1f;》 知乎掃盲貼&#xff1a; 《網絡是怎么鏈接的》 初識RDMA技術——RDMA概念&#xff0c;特點&#xff0c;協議&#xff0c;通信流程 采樣 》 存儲 》傳輸 》處理 》反應 傳感器 存儲器 接口 算法/cpu 機器

List--鏈表

一、鏈表 1.1 什么是List&#xff1f; 在C語言中&#xff0c;我們需要使用結構體struct來進行List(鏈表&#xff09;的實現&#xff1a; struct ListNode {DataType Data;//DataType是任意類型的變量定義struct ListNode* next;//指向下一個結點的指針變量 }; 與之前的vect…

tensor 的計算操作

1、創建tensor 常見創建 tensor 的方法 函數 作用 torch.Tensor(*size) 通過指定尺寸&#xff0c;生成一個 值全為 0 的 tensor torch.tensor(*list) 直接通過指定數據&#xff0c;生成tensor&#xff0c;支持 List、Numpy數組 torch.eye(row, column) 按照指定的行列數…

【Java面試題04】MySQL 篇

文章目錄 一、前言&#x1f680;&#x1f680;&#x1f680;二、MySQL 篇&#xff1a;??????1、MySQL 是如何實現事務的? 后序還在更新中~~~三、總結&#xff1a;&#x1f353;&#x1f353;&#x1f353; 一、前言&#x1f680;&#x1f680;&#x1f680; ?? 你每一…

UDP/TCP協議知識及相關機制

一.UDP協議 UDP是一種無連接、不可靠、面向報文、全雙工傳輸層的協議~ 1.無連接 &#xff1a; 知道對端的端口號和IP可以直接傳輸&#xff0c;不需要建立連接 2..不可靠&#xff1a;沒有確認機制&#xff0c;沒有重傳機制&#xff0c;不知道數據包能否能正確到達對端&#xff0…