我正在尝试获取手动输入并在 for 循环中使用这些输入以在 CSV 文件中吐出结果,但我无法让它工作。
我试图在 for 循环之外创建一个输入变量,它接受一个似乎没有传递到 for 循环中的 int 值。我还尝试手动输入内存量和操作系统名称。目标是吐出服务器名称。
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))
输出应该是:姓名:
名称:服务器 1,CPU:4,内存:8,操作系统:windows 7
和
名称:服务器 5,CPU:4,内存:8,操作系统:windows 7
最佳答案
尝试使用这个:
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")
)。
希望这对您有所帮助!
灰
https://stackoverflow.com/questions/56809586/