创建编号目录&按范围对它们进行分组

时间:2013-01-27 19:46:54

标签: python

执行以下操作的正常方法是什么?我在目录中有一些文件(例如):

01, 02, 03
10, 15
35
41, 44, 49

我想创建并将它们放在这样的目录中:

01-10
11-20
31-40
41-50

我完全不确定是否有范围列表,开始/结束编号列表或字典。谢谢你的帮助。

编辑:我引起一些混乱,我道歉。

我有以下文件:

01.txt
02.txt
03.txt
10.txt
15.txt
35.txt
41.txt
44.txt
49.txt

我在与上述文件相同的目录中有以下目录:

01-10
11-20
31-40
41-50

我想将.txt文件移动到它们所属的目录中。

2 个答案:

答案 0 :(得分:3)

您的代码应该:

  1. 遍历每个文件
  2. 确定应包含该文件的目录的名称
  3. 创建目录(如果该目录不存在)
  4. 将文件移至目录
  5. 要实现2,您应该编写一个函数,给定文件名返回相应的目录名称。首先,假设filename的basename是一个数字:

    n = int(os.splitext(filename)[0])
    

    然后使用以下表达式

    d = (n-1)//10
    

    给出正确的数字分组41 - > 4,50 - >这一个:

    dir = '%2.2d-%2.2d' % (10*d+1,10*(d+1))
    

    转换4 - > '41 -40'

答案 1 :(得分:1)

从manu-fatto开始,至少会显示从filenamedestdir名称的转换。

使用不同的文件shutil.move(src, dst)移动文件可能会有所帮助,尽管我认为您必须小心。

import os.path

def destdir(filename):
    f =  int(os.path.splitext(filename)[0])
    d = (f - 1) // 10
    return "%02d-%02d" % (10*d+1,10*(d+1))


def filenames():
    """OP to write implementation"""
    n = 23
    for x in range(1, n + 1):
        yield "%02d.txt" % x

for filename in filenames():
    print filename, destdir(filename)

输出:

01.txt 01-10
02.txt 01-10
03.txt 01-10
04.txt 01-10
05.txt 01-10
06.txt 01-10
07.txt 01-10
08.txt 01-10
09.txt 01-10
10.txt 01-10
11.txt 11-20
12.txt 11-20
13.txt 11-20
14.txt 11-20
15.txt 11-20
16.txt 11-20
17.txt 11-20
18.txt 11-20
19.txt 11-20
20.txt 11-20
21.txt 21-30
22.txt 21-30
23.txt 21-30