2016-06-03 2 views
2

У меня есть список строк, который содержит файлы, как показано нижеСоздание папок путем проверки номера в начале строки с питоном

filename = [ '000101 FL - Project Title Page.DOC', 
'014200 FL - References.DOC', 
'095446 FL - Fabric-Wrapped Ceiling Panels.DOC', 
'142113 FL - ELECTRIC TRACTION FREIGHT ELEVATORS.DOC'] 

Я хочу, чтобы проверить, если папку с именем, состоящими из Div + первых двух чисел в каждой строке существуют такие, как Div00, Div01, Div09, Div14 в этом случае. Если нет, я бы хотел создать эту папку. Затем сохраните имя файла в этой папке.

В псевдокоде я считаю, что это было бы похоже на

for file in filenames 
    if 'Div' + file[0][0] not a folder 
     make folder 'Div' + file[0][0] 
     add file to folder 
    else 
     add file to folder Div + file[0][0] 

Там будет несколько файлов, которые начинаются с тех же двух чисел, поэтому я хочу, чтобы отсортировать их в папку.

Сообщите мне, если вам нужно какое-либо разъяснение.

+1

Вы хотите скопировать файл в папку, переместить файл в складку r или создать пустой файл с именем файла в папке? –

+0

@ DavidCullen Я должен был это разъяснить. Я хочу скопировать все файлы, начиная с XX, в новую папку под названием DivXX – Jstuff

+0

@Jstuff, скопировать или переместить? – SparkAndShine

ответ

1

Использование os.mkdir для создания каталога и shutil.copy2 скопировать файл,

import os 
import shutil 

filenames = [ '000101 FL - Project Title Page.DOC'] 

for filename in filenames: 
    folder = 'Div' + filename[:2]  # 'Div00' 

    # Create the folder if doesn't exist 
    if not os.path.exists(folder): 
     os.makedirs(folder) 

    # Copy the file to `folder` 
    if os.path.isfile(filename): 
     shutil.copy2(filename, folder) # metadata is copied as well 
+0

Div изначально не присутствует в именах файлов. Его нужно добавить позже. – Jstuff

+0

@Jstuff, извините за неправильное понимание. Только что отредактировал мой ответ. – SparkAndShine

+1

Хорошо, я получаю сообщение об ошибке. PermissionError: [Errno 13] Permission denied: 'C: \\ Users \\ justin.white \\ Desktop \\ Master_specs_With_Divisions \\ Div00' При попытке скопировать файл в новую папку. Ничего, я не понял, что мне нужно использовать copy2. – Jstuff

1

Вы можете просто проверить, если есть папка и сделать его, если он не существует

if not os.path.exists(dirName): 
    os.makedirs(dirName) 
0

Попробуйте что-нибудь например:

import os 
import shutil 

for file in filenames 
    dir_name = "Div%s" % file[0:2] 
    if not os.path.isdir(dir_name) 
     os.makedirs(dir_name) 
    shutil.copy(file, dir_name)