2017-03-22 9 views
1

私はファイルベースの1つのファイル名をソートするのに役立つよりも、スクリプトがPythonで書かれているのを見て、例えばファイル名に基づいてファイルをソートPython

: Iは未整理

111-iam.txt

111-how.txt

110-uare.txt

110-という名前のフォルダに4ファイルを持っていますuok.txt

すべてのファイル名111-xxx.txtとフォルダ名110をすべてのファイル名110-xxx.txtに保つためにフォルダ名111を作成したい

既にフォルダにファイルがある場合は、そのフォルダにファイルを移動していない場合は、新しいフォルダを作成します。

これは最初の実行では機能しましたが、111または110で始まるUnsortedフォルダ名に新しいファイルがあると、エラーが表示されます。 os.mkdir(full_path)FileExistsError:[Errno 17]ファイルが存在します: '/ home/pi/Desktop/Sorted/111' ここに私のコードです。

事前

に感謝君たち
import os 
import shutil 

srcpath = "/home/pi/Desktop/Unsorted" 
srcfiles = os.listdir(srcpath) 

destpath = "/home/pi/Desktop/Sorted" 

# extract the ten letters from filenames and filter out duplicates 
destdirs = list(set([filename[0:2] for filename in srcfiles])) 


def create(dirname, destpath): 
    full_path = os.path.join(destpath, dirname) 
    os.mkdir(full_path) 
    return full_path 

def move(filename, dirpath):shutil.move(os.path.join(srcpath, filename),dirpath) 

# create destination directories and store their names along with full paths 
targets = [(folder, create(folder, destpath)) for folder in destdirs] 

for dirname, full_path in targets: 
    for filename in srcfiles: 
     if dirname == filename[0:2]: 
      move(filename, full_path) 
+1

_it show errors_ - どのようなエラーが表示されましたか?私たちに推測させないでください!これはスクリプトを実行せずにglaceで解決できるものかもしれません。私たちが簡単に答えるようにしてください。 – tdelaney

+0

情報が不明なのは大変申し訳ございません。エラーは です。os.mkdir(full_path) FileExistsError:[Errno 17]ファイルが存在します: '/ home/pi/Desktop/Sorted/111' – zuzu

答えて

0

os.path.isdir(path)ます:

Return True if path is an existing directory.

ですからするディレクトリの作成方法を変更できます。また

import os.path 
... 
def create(dirname, destpath): 
    full_path = os.path.join(destpath, dirname) 
    if os.path.isdir(full_path): 
     os.mkdir(full_path) 
    return full_path 

ask forgiveness not permission

def create(dirname, destpath): 
    full_path = os.path.join(destpath, dirname) 
    try: 
     os.mkdir(full_path) 
    except FileExistsError: 
     pass 
    return full_path 
+0

ありがとうございます。それは今働きます! – zuzu

関連する問題