2017-12-18 25 views
0

ファイルがあり、いくつかのフォルダに移動したいのですが。私はこれらのフォルダをファイルの数に基づいて作成するコードを作った。ファイルを各フォルダに移動するにはどうすればよいですか?フォルダを作成中にファイルをフォルダに移動する

import os 
import errno 

src = (os.path.expanduser('~\\Desktop\\output8\\singola\\')) 

causali = os.listdir(src) 
causali.sort(key=lambda x: int(x.split('.')[0])) 

for file in enumerate(causali): 
    try: 
     id_folder = os.makedirs(os.path.expanduser('~\\Desktop\\output8\\singola\\{}'.format(file[0]))) 
    except OSError as e: 
     if e.errno != errno.EEXIST: 
      raise 

このような何か...

example

+0

すべてのファイルは1つのディレクトリにありますか?それらを別のディレクトリに移動したいのですか? – mtkilic

+1

Pythonライブラリ 'shutil'を見てください – mtkilic

+0

@mtkilic私はshutilを使用していますが、これを行うには文字列フォーマットのロジックを理解できません。私は仕事をする別の方法を見つけましたが、私はそれを好きではありません。 – Link

答えて

1

os.rename()またはshutil.move()、どちらも同じ構文を持っています。ディレクトリ内の各ファイル名のサブディレクトリ(フォルダ)を作成するコードの下に、あなたの場合は

os.rename("path/to/current/file.foo", "path/to/new/desination/for/file.foo") 
shutil.move("path/to/current/file.foo", "path/to/new/destination/for/file.foo") 

import os 
import errno 

src = (os.path.expanduser('~\\Desktop\\output8\\singola\\')) 

causali = os.listdir(src) 
causali.sort(key=lambda x: int(x.split('.')[0])) 

for file in enumerate(causali): 
    try: 
     id_folder = os.makedirs(os.path.expanduser('~/test_move/{}'.format(file[0]))) 
     os.rename(os.path.expanduser('~\\Desktop\\output8\\singola\\{}'.format(file[1])),os.path.expanduser('~\\Desktop\\output8\\singola\\{}\\{}'.format(file[0],file[1]))) 
    except OSError as e:path/to/new/destination/for/file 
     if e.errno != errno.EEXIST: 
      raise 
+0

LOL、私は自分で解決策を見つけるのにあなたに90%近いところでした... – Link

+1

偉大な、私は今あなたの心に固執すると確信しています。よくやった! – andrewnagyeb

1

、フォルダの名前は、あなたのファイル名と同じになります。そして、各ファイルは同じ名前のフォルダに移動さ​​れます。

import glob, os, shutil                  
source = "C:\\Users\\xx\\Desktop\\Folder" 

for file_path in glob.glob(os.path.join(source, '*.*')): 
    new_sub_folder = file_path.rsplit('.', 1)[0] 
    os.mkdir(os.path.join(source, new_sub_folder)) 
    shutil.move(file_path, os.path.join(new_sub_folder, os.path.basename(file_path))) 
関連する問題