-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を達成するには、ファイル名を指定して対応するディレクトリ名を返す関数を作成する必要があります。まず、filenameのベース名が数値であると想定します。

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 に続いて、少なくともこれはfilenameからdestdirname への変換を示しています。

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 に答える