我有一个简单的Python脚本,它要求用户输入ID并返回序列号:

...
id = input("Enter ID (0-indexed):\n")
...
print(serial_number)

我正在通过命令替换在一个更大的bash脚本中使用这个.py脚本:

serial_number=$(./get_serial_no.py)
echo "$serial_number"

我面临的问题如下:因为命令替换将命令的整个输出作为输入,所以Python脚本中的输入提示符也存储在serial_number变量中,并且永远不会显示在屏幕上(直到echo).因此,如果我运行shell 脚本,控制台将在不给我提示的情况下等待输入.有没有办法将Python提示符与我希望通过命令替换返回的值(即序列号)分开?我能想到的唯一办法就是将序列号写入另一个文件,或者在shell 脚本中请求输入并将ID作为选项传递给Python脚本.

推荐答案

如果您在shell 脚本中使用的是一个python脚本,我建议不要使用提示.对库(如argparse)使用命令行选项.这要容易得多,此外,您还可以获得输入验证作为额外的奖励:

import argparse

parser.add_argument(
    '-s',
    '--serial_number',
    type = int,
    default = 12345,
    required = False,
    help = re.sub(
        r'\s+', r' ',
        
    '''Serial number (default: %(default)s)'''))
 
options = parser.parse_args()
print(optiions.serial_number)

Python相关问答推荐

使用decorator 重复超载

合并其中一个具有重叠范围的两个框架的最佳方法是什么?

FastAPI:使用APIRouter路由子模块功能

Python中的函数中是否有充分的理由接受float而不接受int?

如何从FDaGrid实例中删除某些函数?

如何使用scipy从频谱图中回归多个高斯峰?

将DF中的名称与另一DF拆分并匹配并返回匹配的公司

TARete错误:类型对象任务没有属性模型'

为什么我的Python代码在if-else声明中的行之前执行if-else声明中的行?

沿着数组中的轴计算真实条目

计算组中唯一值的数量

如何从数据库上传数据到html?

使用Python更新字典中的值

在Python中,从给定范围内的数组中提取索引组列表的更有效方法

在matplotlib中删除子图之间的间隙_mosaic

旋转多边形而不改变内部空间关系

具有相同图例 colored颜色 和标签的堆叠子图

基于Scipy插值法的三次样条系数

Discord.py -

从一个df列提取单词,分配给另一个列