当前位置: 首页 > news >正文

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.xdnf.cn/news/244711.html

相关文章:

  • 3D版同步帧游戏
  • 案例:自动化获取Web页面小说(没钱修什么仙)——selenium
  • mem0 安装与测试:一个强大的对话记忆管理工具
  • 机器人手臂控制器:EMC电磁兼容解决(一)
  • 分寝室(C++完成)
  • 阿里云自动备份网站,阿里云自动备份网站的方法
  • kotlin中 热流 vs 冷流 的本质区别
  • 编程语言全景解析与编程技巧深度探索
  • 基于MyBatis的银行转账系统开发实战:从环境搭建到动态代理实现
  • 人工智能——DBSCAN 聚类算法
  • Webug4.0靶场通关笔记07- 第9关反射XSS和第10关存储XSS
  • 【Quest开发】极简版!透视环境下抠出身体并能遮挡身体上的服装
  • 免费实用的图像处理工具箱​
  • Java 泛型参数问题:‘ResponseData.this‘ cannot be referenced from a static contex
  • 原型模式(Prototype Pattern)详解
  • K8S - ReplicaSet 与 Deployment 深度解析与实战
  • Curl 全面使用指南
  • 【含文档+PPT+源码】基于大数据的交通流量预测系统
  • WebStorm用户界面
  • 【排序算法】八大经典排序算法详解
  • Wireshark抓取SMTP协议报文
  • 算法查找目录
  • Webug4.0靶场通关笔记08- 第11关万能密码登录(SQL注入漏洞)
  • Linux之shell脚本
  • Golang多人在线坦克对战游戏(帧同步)
  • Android Kotlin 项目集成 Firebase Cloud Messaging (FCM) 全攻略
  • 多模态大语言模型arxiv论文略读(五十三)
  • 红利底波是什么意思?
  • WPF处理大规模激光数据计算与安全传输处理
  • 图论---有向图的强连通分量(Tarjan求SCC)