简化具有多个值的if子句的pythonic方法

简化具有多个值的if子句的pythonic方法,python,if-statement,Python,If Statement,基本上,我希望将a.txt、b.txt、c.txt逐一放入os.path.exists函数中,然后在if子句中,我希望打印包含文件名的消息。我不知道如何使它成为蟒蛇。我看到人们在一行中写“in”和“if”,但我不知道在我的例子中如何做到这一点,因为我有一个打印函数,它也使用“file”值 同样,我想让它变得高效,pythonic。您可以使用os.path.join函数而不是串联: import os for file in ['a.txt', 'b.txt', 'c.txt']: if

基本上,我希望将a.txt、b.txt、c.txt逐一放入os.path.exists函数中,然后在if子句中,我希望打印包含文件名的消息。我不知道如何使它成为蟒蛇。我看到人们在一行中写“in”和“if”,但我不知道在我的例子中如何做到这一点,因为我有一个打印函数,它也使用“file”值


同样,我想让它变得高效,pythonic。

您可以使用
os.path.join
函数而不是串联:

import os
for file in ['a.txt', 'b.txt', 'c.txt']:
    if not os.path.exists(os.getcwd() + '\\' + file):
        print(fr'{file} is missing')

你说的“蟒蛇”是什么意思还不清楚。有一件事是使用现代stdlib模块,例如
pathlib

从pathlib导入路径
对于['a.txt','b.txt','c.txt']中的文件:
如果不是(path.cwd()/file).exists():
打印(缺少fr“{file}”)
不使用不必要的位也可能是python式的:字符串前缀
r
是完全不必要的

你也可以选择功能性路线,但恐怕不是很受欢迎。它可以用于将一些复杂的位“合并”在一起,并避免重复调用
cwd
,不过:

从pathlib导入路径
对于映射中的文件(path.cwd().joinpath,['a.txt','b.txt','c.txt']):
如果不是,则为file.exists():
打印(缺少f{file.name})

我也会避免使用
文件的名称
:我会假设它是一个实际的文件对象(即
打开
的输出),但这更像是一件个人的事情。

当你试图检查每个文件是否存在时,你将需要一个
for
循环。这对我来说很像Pythonic。它很容易阅读和理解,我不确定你想要通过修改它来实现什么。看起来你在想
如果文件在('a.txt',b.txt',c.txt'):
但那是在测试完全不同的东西。你的代码已经达到了它所能达到的程度。有史以来最好的评论,真的想在你的答案上打两个勾,虽然stackoverflow没有这个功能。
import os
for file in ['a.txt', 'b.txt', 'c.txt']:
    if not os.path.exists(os.path.join(os.getcwd(), file)):
        print(fr'{file} is missing')