-1

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

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 文件移动到它们所属的目录中。

4

2 回答 2

3

您的代码应该:

  1. 遍历每个文件
  2. 确定应该包含该文件的目录的名称
  3. 如果目录不存在则创建
  4. 将文件移动到目录中

要实现 2,您应该编写一个函数,给定文件名返回相应的目录名。首先,您假设文件名的基本名称是一个数字:

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

然后使用以下表达式

d = (n-1)//10

这给出了数字 41 -> 4、50 -> 4 的正确分组。而这个:

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

转换 4 -> '41-40'

于 2013-01-27T19:52:16.323 回答
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
于 2013-01-27T23:53:16.787 回答