Python,如果文件TYPE存在与否,我可以得到返回true或false吗?

Dog*_*yte 0 python

我已经通过这里的path.exists()和path.isdir()问题进行了阅读,但是到目前为止还没有找到,请检查目录中是否存在特定的文件类型...也许我没有搜索到正确的这个术语.

基本上,我想轮询一组文件夹,看看是否有txt文件...如果他们在那里,我会想要运行一串pexpect命令(每个命令/密码不同)将*.txt放入到远程服务器位置.我已经把我的put和get pexpect脚本工作了.

我尝试使用这样的通配符,但当然没有这样的运气.

>>> print(os.path.exists("/mnt/path/to/shared/folder/*.txt"))
False
Run Code Online (Sandbox Code Playgroud)

而不是有15个cron作业,每隔5分钟盲目放*.txt,我想只运行一个检查所有文件夹位置的脚本.如果txt文件存在= TRUE(然后做Pexpect的工作)如果为假,去下一个文件夹路径,并检查是否存在= txt文件真(然后做Pexpect的工作)ECT ....

glob似乎是票.我测试了这个:

    import glob

if next(glob.iglob("/path/to/files/*.txt"), None):
   print "there are txt files" # there are text files
else:
    print "there are no text files"
Run Code Online (Sandbox Code Playgroud)

$ python check.py

有txt文件

Ada*_*ith 6

你想用glob.

import glob

if glob.glob("/mnt/path/to/shared/folder/*.txt"):
    # there are text files
else:
    # No text files
Run Code Online (Sandbox Code Playgroud)

Glob将返回与通配符可访问路径匹配的文件列表.如果没有文件,它将返回一个空列表.这真的只是os.listdirfnmatch.filter在一起.

如果内存是个问题,请glob.iglob在评论中使用200OK建议:

import glob

if next(glob.iglob("/mnt/path/to/shared/folder/*.txt"), None):
    # there are text files
else:
    # No text files
Run Code Online (Sandbox Code Playgroud)

iglob 构建迭代器而不是列表,这大大节省了内存.

  • `if next(glog.iglob(...),None)` (3认同)