bash传递变量到Python脚本触发TypeError运算报错问题求助
报错根因
- 通过
os.environ读取的所有环境变量值默认都是字符串类型,你单独运行Python脚本时应该是直接给pdiv赋值了整数,所以不会触发报错;但从Bash调用时,pdiv实际是字符串格式的数字,直接传入roundup函数做除法运算,就会触发类型不匹配的报错。 - 你之前尝试修改运算表达式的方向不对,问题根源不在运算逻辑,而在传入参数的类型错误。
修复方法
只需要修改读取环境变量的代码行,读取时直接转为整数即可:
# 原代码 pdiv=os.environ["div"] # 修改为 pdiv = int(os.environ["div"])
其他潜在问题修复
你提供的代码中还有两处逻辑错误,也需要同步修改避免后续报错:
- 位数判断逻辑错误:原代码中
if z == 4、elif z == 5的判断条件错误,z是向上取整后的整数值,你实际要判断的是数字位数,对应变量是divide:
# 修改前 if z == 4: byte=str(array[0]) +'k' elif z == 5: byte=str(array[0]) + str(array[1]) + 'k' # 修改后 if divide == 4: byte=str(array[0]) +'k' elif divide == 5: byte=str(array[0]) + str(array[1]) + 'k'
- 文件关闭未生效:原代码末尾
file.close没有加括号,并未实际调用关闭方法,建议修改为:
file.close() # 更稳妥的写法是使用with上下文管理器,无需手动关闭文件: with open("Bytes.txt", "w") as file: file.write(byte)
内容的提问来源于stack exchange,提问作者Jesse Hix
相关产品推荐
相关产品推荐

