Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
类似于bash find命令的Python函数_Python - Fatal编程技术网

类似于bash find命令的Python函数

类似于bash find命令的Python函数,python,Python,我的dir结构如下所示: [me@mypc]$ tree . . ├── set01 │   ├── 01 │   │   ├── p1-001a.png │   │   ├── p1-001b.png │   │   ├── p1-001c.png │   │   ├── p1-001d.png │   │   └── p1-001e.png │   ├── 02 │   │   ├── p2-001a.png │   │   ├── p2-001b.png │   │   ├── p2-00

我的dir结构如下所示:

[me@mypc]$ tree .
.
├── set01
│   ├── 01
│   │   ├── p1-001a.png
│   │   ├── p1-001b.png
│   │   ├── p1-001c.png
│   │   ├── p1-001d.png
│   │   └── p1-001e.png
│   ├── 02
│   │   ├── p2-001a.png
│   │   ├── p2-001b.png
│   │   ├── p2-001c.png
│   │   ├── p2-001d.png
│   │   └── p2-001e.png

我想编写一个python脚本,将所有*a.png重命名为01.png,*b.png重命名为02.png,依此类推。首先,我想我必须使用类似于
find的东西-名称“*.png”
,我在python中发现的最相似的东西是
os.walk
。然而,在
os.walk
中,我必须检查每个文件,如果它是png,那么我将把它与它的根连接起来,不知何故,这并不优雅。我想知道有没有更好的方法?提前感谢。

对于这样的搜索模式,您可能会侥幸逃脱

从大卫·M·比兹利那里退房

# genfind.py
#
# A function that generates files that match a given filename pattern

import os
import fnmatch

def gen_find(filepat,top):
    for path, dirlist, filelist in os.walk(top):
        for name in fnmatch.filter(filelist,filepat):
            yield os.path.join(path,name)

# Example use

if __name__ == '__main__':
    lognames = gen_find("access-log*","www")
    for name in lognames:
        print name
您可以使用来遍历目录树。 也许这样行吗

import os

for dpath, dnames, fnames in os.walk("."):
  for i, fname in enumerate([os.path.join(dpath, fname) for fname in fnames]):
    if fname.endswith(".png"):
      #os.rename(fname, os.path.join(dpath, "%04d.png" % i))
      print "mv %s %s" % (fname, os.path.join(dpath, "%04d.png" % i))

这是一个很方便的选择。

我会考虑使用<代码>文件.EnthsAs(“.pNG”):而不是那个<代码> RSPLIT()/Cux>(这将比实际需要做更多的工作)。
import os

for dpath, dnames, fnames in os.walk("."):
  for i, fname in enumerate([os.path.join(dpath, fname) for fname in fnames]):
    if fname.endswith(".png"):
      #os.rename(fname, os.path.join(dpath, "%04d.png" % i))
      print "mv %s %s" % (fname, os.path.join(dpath, "%04d.png" % i))