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

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

我想先解释一下这个应用程序/Python 程序是做什么的,以便您更好地理解问题。我是编程的绝对初学者,所以请放轻松,我已尽我所能尽可能生动地解释它。 此应用程序将用于测试 4000 台设备是否有正确的软件硬件版本和其他信息。它是如何通过网络服务器完成的,每个设备都有一个将被扫描的二维码(它就像一个条形码),这个扫描的代码包含 mac 地址和订单号。首先,当我在命令提示符下运行程序时,它应该如下所示:

Example parameters

我应该能够定义所需的变量,因此在命令提示符中手动输入它,除了扫描码,当我使用 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 = ","--desired-softwareversion = "," --pc-praefix","--desired-device-type=","--scancode=","58183#99AF0M000F9EF3F800")

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


print("./productionreview -output test.csv","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*"")

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

解决方法

我认为最简单(也是最 Python 化)的方法是使用 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 非常易于使用。 您需要定义每个参数。

你应该尝试为你的代码使用函数,它会帮助你定义一些更容易阅读/使用的东西:)

希望对你有足够的帮助。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?