检查目录是否包含具有给定扩展名的文件
Check if a directory contains a file with a given extension
我需要检查当前目录,看看是否存在带扩展名的文件。我的设置(通常)只有一个具有此扩展名的文件。我需要检查该文件是否存在,如果存在,运行 一个命令。
但是,它 运行 多次 else
因为有多个文件具有备用扩展名。如果文件不存在,它必须只 运行 else
,而不是每个其他文件一次。我的代码示例如下。
目录结构如下:
dir_________________________________________
\ \ \ \
file.false file.false file.true file.false
当我运行:
import os
for File in os.listdir("."):
if File.endswith(".true"):
print("true")
else:
print("false")
输出为:
false
false
true
false
问题在于,如果我用有用的东西替换 print("false")
,它会 运行 多次。
编辑: 我在 2 年前问过这个问题,现在还很温和 activity,因此,我想把这个留给其他人: http://book.pythontips.com/en/latest/for_-_else.html#else-clause
如果您只想检查任何文件是否以特定扩展名结尾,请使用 any
。
import os
if any(File.endswith(".true") for File in os.listdir(".")):
print("true")
else:
print("false")
您可以使用 for
的 else
块:
for fname in os.listdir('.'):
if fname.endswith('.true'):
# do stuff on the file
break
else:
# do stuff if a file .true doesn't exist.
只要不执行循环内的break
,附加到for
的else
将是运行。如果您认为 for
循环是一种搜索内容的方式,那么 break
会告诉您是否找到了该内容。当您没有找到要搜索的内容时,else
是 运行。
或者:
if not any(fname.endswith('.true') for fname in os.listdir('.')):
# do stuff if a file .true doesn't exist
此外,您可以使用 glob
模块代替 listdir
:
import glob
# stuff
if not glob.glob('*.true')`:
# do stuff if no file ending in .true exists
您应该使用 glob
模块来准确查找您感兴趣的文件:
import glob
fileList = glob.glob("*.true")
for trueFile in fileList:
doSomethingWithFile(trueFile)
类似于@bgporter 的解决方案,您也可以使用 Path 来做类似的事情:
import Path
cwd = Path.cwd()
for path in cwd.glob("*.true"):
print("true")
DoSomething(path)
我需要检查当前目录,看看是否存在带扩展名的文件。我的设置(通常)只有一个具有此扩展名的文件。我需要检查该文件是否存在,如果存在,运行 一个命令。
但是,它 运行 多次 else
因为有多个文件具有备用扩展名。如果文件不存在,它必须只 运行 else
,而不是每个其他文件一次。我的代码示例如下。
目录结构如下:
dir_________________________________________
\ \ \ \
file.false file.false file.true file.false
当我运行:
import os
for File in os.listdir("."):
if File.endswith(".true"):
print("true")
else:
print("false")
输出为:
false
false
true
false
问题在于,如果我用有用的东西替换 print("false")
,它会 运行 多次。
编辑: 我在 2 年前问过这个问题,现在还很温和 activity,因此,我想把这个留给其他人: http://book.pythontips.com/en/latest/for_-_else.html#else-clause
如果您只想检查任何文件是否以特定扩展名结尾,请使用 any
。
import os
if any(File.endswith(".true") for File in os.listdir(".")):
print("true")
else:
print("false")
您可以使用 for
的 else
块:
for fname in os.listdir('.'):
if fname.endswith('.true'):
# do stuff on the file
break
else:
# do stuff if a file .true doesn't exist.
只要不执行循环内的break
,附加到for
的else
将是运行。如果您认为 for
循环是一种搜索内容的方式,那么 break
会告诉您是否找到了该内容。当您没有找到要搜索的内容时,else
是 运行。
或者:
if not any(fname.endswith('.true') for fname in os.listdir('.')):
# do stuff if a file .true doesn't exist
此外,您可以使用 glob
模块代替 listdir
:
import glob
# stuff
if not glob.glob('*.true')`:
# do stuff if no file ending in .true exists
您应该使用 glob
模块来准确查找您感兴趣的文件:
import glob
fileList = glob.glob("*.true")
for trueFile in fileList:
doSomethingWithFile(trueFile)
类似于@bgporter 的解决方案,您也可以使用 Path 来做类似的事情:
import Path
cwd = Path.cwd()
for path in cwd.glob("*.true"):
print("true")
DoSomething(path)