美文网首页
Windows下Python3脚本传到Linux下./examp

Windows下Python3脚本传到Linux下./examp

作者: robot_test_boy | 来源:发表于2021-11-18 00:34 被阅读0次

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解释器来处理。

相关文章

  • Windows下Python3脚本传到Linux下./examp

    1. 背景 大多数情况下通过pycharm编写Python代码,编写调试完,到Linux下发布执行。 以examp...

  • 解决linux shell脚本 syntax error:une

    在windows下通过记事本编辑shell脚本,上传到linux环境下执行。 提示syntax error:une...

  • Linux下去掉^M的几种方法

    问题分析:在windows下使用notepad++写的脚本上传到Linux下,在使用vim编辑的时候我们发现在行末...

  • 2020-01-31$'\r': command not fou

    linux下执行脚本时出现$'\r': command not found 这个文件是在Windows下编辑的,那...

  • 批处理脚本

    shell脚本和批处理,通常就是linux和windows下进行的一些简单脚本执行任务的途径。对于linux来说,...

  • jmeter命令行模式生成报告(2019-01-14)

    一般情况下,脚本在Windows系统UI模式下编译脚本,这样方便调试,但由于ui占用资源较多,建议在Linux系统...

  • Shell脚本

    Windows写的shell脚本在Linux执行错误 reason:在windows下编辑的sh文件的格式为dos...

  • python基础

    查看更多见: 脚本运行 Windows 下需将python加入的系统变量中; Linux 下需添加头部 循环 fo...

  • set -e 命令报错

    Linux下执行脚本报错提示invalid option 3: set: - 原因是使用了Windows下的编辑工...

  • git 添加可执行文件权限

    在Windows下开发的脚本文件,提交到git仓库后,在Linux上克隆下,发现脚本文件无执行权限解决办法如下

网友评论

      本文标题:Windows下Python3脚本传到Linux下./examp

      本文链接:https://www.haomeiwen.com/subject/ztwozltx.html