我有一个csv文件所在的目录。代码读取文件并根据文件中的数据创建直方图。
但是,我试图让它在命令行中输入csv文件中的一个列标题,代码只会生成指定命令的图形。示例:python histogram_maker.py“C:/ Folder”Area。
我能够做到这一点,但我想添加一个会在用户输入未在csv文件中指定的命令时创建错误消息的部分。示例:周边不存在。我的代码出了什么问题?即使存在某些东西,我在命令提示符下也会“不存在”20次,但它仍然会生成我需要的所有文件。如何阻止这种重复并使其成为只有在csv文件中没有内容时才会出现错误。
for column in df:
os.chdir(directory)
if len(sys.argv)>2:
for x in arguments:
if x.endswith(column):
#code for histogram
else:
print "does not exist"
答案 0 :(得分:6)
您正在测试所有参数,即使只有一个匹配。对于不匹配的每个参数,您将打印错误消息。
使用any()
功能查看是否有匹配项:
if len(sys.argv)>2:
if any(x.endswith(column) for x in arguments):
#code for histogram
else:
print "does not exist"
或反转测试;使用not
并提前纾困:
if len(sys.argv)>2:
if not any(x.endswith(column) for x in arguments):
print "does not exist"
sys.exit(1)
#code for histogram
如果带有生成器表达式的any()
有点太难以理解,您仍然可以使用for
循环,但是您需要使用break
提前结束循环并且else:
套件将在for
循环未提前退出时执行:
for x in arguments:
if x.endswidth(column):
break # found a match
else:
# `for` loop was not exited, so no match found
print "does not exist"
sys.exit(1)
答案 1 :(得分:0)
也许你想要这样的东西......
for column in df:
os.chdir(directory)
if len(sys.argv)>2:
found = False
for x in arguments:
if x.endswith(column):
found = True
#code for histogram
break
if (found == False):
print "does not exist"