如何在命令提示符中输入变量并将输入变量与其他变量进行比较

How to input variables in command prompt and compare the input variables with other variables

我想先解释一下这个application/Python程序是干什么的,以便大家对问题有更好的理解。我是编程的绝对初学者,所以请放轻松,我已尽力尽可能生动地解释它。 此应用程序将用于测试 4000 台设备是否有正确的软件硬件版本和其他信息。它是如何通过 Web 服务器实现的,每个设备都有一个将被扫描的二维码(类似于条形码),该扫描码包含 mac 地址和订单号。首先,当我 运行 命令提示符下的程序时,它应该如下所示: 我应该能够定义所需的变量,因此在命令提示符中手动输入它,除了当我使用 2D 扫描仪并扫描设备外部的代码时会自动出现的扫描码。扫描码包含设备 mac 地址(最后 12 位数字)和订单号(前 5 位数字)我发现了如何剖析它并将其与网络服务器的 Mac 地址和订单号进行比较。

一旦我为订单号硬件版本软件版本等定义了所需值,就需要将这些“所需”值与网络服务器值进行比较。 (请参阅我的 Python 代码以供参考,我通过 xml.dom 获取网络服务器值,然后将其与所需值进行比较以查看值是否正确。 到目前为止,我只是在源代码中手动定义了所需的值,但我想在调用程序“C:\Users\Barry\Automate main.py”后在命令提示符行上定义它们 我希望你们已经理解我面临的问题,我想知道是否有人可以帮助我解决这个任务,我已经在谷歌上搜索了很多,但我找不到如何去做。 图片中我上传的红色下划线的值是手动输入的,蓝色的是我扫描设备时自动出现的扫描码。 我用 input() 方法尝试了几件事,但是没有成功示例:

print("./productionreview -output test.csv", "--desired-orderno = ",input(),  "--desired-hardwareversion = ",input(), "--desired-softwareversion = ",input()," --pc-praefix",input(), "--desired-device-type=",input(), "--scancode=", "58183#99AF0M000F9EF3F800")

这是我的代码,如果我没有使用正确的术语,请放轻松我对编程世界来说是新手,但它很有趣。


print("./productionreview -output test.csv", "--desired-orderno = ",input(),  "--desired-hardwareversion = ",input(), "--desired-softwareversion = ",input()," --pc-praefix",input(), "--desired-device-type=",input(), "--scancode=", "58183#99AF0M000F9EF3F800")

# Desired Values

# Timestamp
now = datetime.now().strftime("%Y-%m-%d %H:%M:%S")

# Eingabe von scancode
scancode_string = input()
scan_code_cropped_mac = scancode_string[12:]
scan_code_cropped_artikel = scancode_string[:5]
#print(scan_code_cropped_artikel)
#print(scan_code_cropped_mac)
print(scancode_string)

print("Current device information: ")
print(now)
print(100*"")

# Order number
print("Desired Order number:",d_ordernum)
print("Order number from scancode :",scan_code_cropped_artikel)
print("Ordernumber from wbm: ", ord_nmr)
if d_ordernum == ord_nmr == scan_code_cropped_artikel:
    print("Order number PASS")
else:
    print("Order number does not match")
print(100*"")

# Hardware version
print("Desired Hardware Version:",d_hw_version)
print("Hardware Version from wbm: ", v)
if d_hw_version == v:
    print("Hardware version PASS")
else:
    print("Wrong Hardware Version")
print(100*"")

# Software version
print("Desired Software Version:",d_sf_version)
print("Software Version from wbm: ", b)
if d_sf_version == b:
    print("Software version PASS")
else:
    print("Wrong Software Version")
print(100*"")

# Mac address
print("Mac address from scancode :",scan_code_cropped_mac)
print("Mac address from wbm: ", mac_addr)
list_of_chars = mac_addr.split(":")
mac_address_string_joined = ''.join(list_of_chars) 
if scan_code_cropped_mac == mac_address_string_joined:
    print("Correct MAC address")
else:
    print("Fail")
print(100*"")

d_product_code = pc_praefix + "-" + d_sf_version + "-" + d_hw_version
product_code = pc_praefix + "-" + b + "-" + v
print("Desired product code: ",d_product_code )
print("Product code of current device: ", product_code)
print(100*"")

print("Desired device type:",d_dev_typ)
print("Device type from wbm: ", dev_typ)
if d_dev_typ == dev_typ:
    print("Device type PASS")
else:
    print("Wrong device type")
print(100*"")

我真的可以使用你们的建议和示例代码

我认为最简单(也是最 pythonic)的方法是使用 argparse 模块。

这里有一个示例可以帮助您了解如何使用它:

import argparse


def main():
    parser = argparse.ArgumentParser(description='This is the description of your command line interface')
    parser.add_argument('-o', '--output', help='The output file (example test.csv)', required=True)
    parser.add_argument('--desired-orderno', help='Desired order', type=int, default=1000, required=True)
    parser.add_argument('--desired-hardwareversion', help='Desired Hardware Version', required=True)
    # ...
    parser.add_argument('--scancode', help='Scancode')
    args = parser.parse_args()

    print(f'Output file: {args.output}')
    if args.scancode:
        print(f'Scancode: {args.scancode}')


main()

如您在此示例中所见,模块 argparse 非常易于使用。 您将需要定义每个参数。

您应该尝试在您的代码中使用函数,这将帮助您定义更易于阅读/使用的内容:)

希望对你有足够的帮助。