如何在python中将手动输入用于for循环?

时间:2019-06-28 15:30:01

标签: python csv parsing

我正在尝试接受手动输入,并在for循环中使用这些输入来将结果吐出到CSV文件中,而我无法使其正常工作。

我试图在for循环外创建一个输入变量,该输入变量接受一个int值,该值似乎没有传递到for循环中。我还尝试手动输入内存量和操作系统名称。目的是吐出服务器名称。

CSV文件:

Name,CPU,Memory,OS
server1,2,4gb,windows 7
server2,4,2gb,arch linux
server3,8,4gb,ubuntu linux
server4,4,2gb,windows server
server5,2,4gb,windows 7

Python代码:

import csv


entercpu = int (input("Enter number of CPU: "))
#enteros = input("Enter the OS: ")
#entermemory = input("Enter the amount of memory: ")


with open('test.csv', 'rb') as csv_file:
    dict_reader = csv.DictReader(csv_file)

    for d in dict_reader:

        if d['NumCpu'] == 'entercpu' and d['Guest OS'] == 'windows 7' and d['MemoryGB'] == '8':
            print('Name: {Name}, CPU: {NumCpu}, Memory: {MemoryGB}, OS: {Guest OS}'.format(**d))

输出应为:名称: Name: Server 1, CPU: 4, Memory: 8, OS: windows 7
Name: Server 5, CPU: 4, Memory: 8, OS: windows 7

1 个答案:

答案 0 :(得分:0)

尝试使用此:

if d['NumCpu'] == str(entercpu) and d['Guest OS'] == 'windows 7' and d['MemoryGB'] == '8':
            print('Name: {Name}, CPU: {NumCpu}, Memory: {MemoryGB}, OS: {Guest OS}'.format(**d))

比较时,需要确保您的类型相同。例如,4 == "4"返回False,但是str(4) == "4"给出True

我认为您输入的内容就是您要输入的'entercpu',但是当尝试从一种类型转换为另一种类型时,您会调用构造函数(即str(4)int("4"))。 / p>

希望这会有所帮助!