python - 在 bash 脚本中调用 python 脚本会更改变量的类型

标签 python python-3.x bash

我有一个 python 脚本,它在某一时刻执行除法。当我从命令行正常运行脚本时,它将数字视为 float ,并执行正确的除法。 即

a = 2 
b = 5
print(a/b)
>0.4

我还编写了一个 bash 脚本,除其他外,它运行相同的 python 脚本。当我运行这个 bash 脚本时,python 将数字视为整数,执行整数除法,然后返回零。为什么会这样?

a = 2 
b = 5
print(a/b) 
>0

编辑:

python脚本

#!/usr/bin/python3

import sys
a = 2 
b = 5
print(sys.version)
print(a/b)

>3.5.2 (default, Nov 23 2017, 16:37:01) 
[GCC 5.4.0 20160609]
0.4

bash 脚本

python stack.py

>2.7.12 (default, Dec  4 2017, 14:50:18) 
[GCC 5.4.0 20160609]
0

最佳答案

在脚本顶部添加 shebang 行:

#!/usr/bin/python3

这将确保您在从 shell 运行时获得一致的 Python 版本。如果没有这个,bash 似乎使用的是 Python2,默认情况下整数除法给出整数结果。

关于python - 在 bash 脚本中调用 python 脚本会更改变量的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50970475/

相关文章:

python - Python 中的 SQL 风格内连接?

python - 在 Python 中的特定行追加或删除文件中的某些文本

python - 未绑定(bind)本地错误 : local variable 'x' referenced before assignment

python - Django(1.3.1) 电子邮件验证对于有效电子邮件地址(如 "xxx@xxx.education")失败

未捕获python3 gspread异常

python - Postgresql插入多列格式错误的数组文字

python-3.x - 这个换币组合算法的时间复杂度是多少?

bash - 如何从文件中读取命令并执行它们?

linux - 数字验证在 Linux shell 脚本中无法正常工作

linux - 如何grep一个文件并输出一行的匹配部分以及周围的一些单词?