csv 如何在Python中手动输入'for'循环?

wbgh16ku  于 2023-07-31  发布在  Python
关注(0)|答案(1)|浏览(117)

我尝试手动输入并在 for 循环中使用这些输入在CSV文件中输出结果,但我无法使其工作。
我尝试在 for 循环外创建一个输入变量,它接受一个int值,而这个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))


输出应为:姓名(N):
Name: Server 1, CPU: 4, Memory: 8, OS: windows 7Name: Server 5, CPU: 4, Memory: 8, OS: windows 7

fwzugrvs

fwzugrvs1#

尝试使用这个:

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"))。
希望这对你有帮助!

相关问题