2012-02-10 2 views
-2

Я занимаюсь этим, но им не очень повезло.Как создать структуру каталогов из списка

Идея состоит в том, что python должен генерировать 10 отдельных 6-значных случайных кодов, эти 6-значные коды могут затем использоваться в качестве имен папок. это кажется такой простой задачей, и я использую makedirs, чтобы попытаться это сделать, но пока не повезло, может кто-нибудь, пожалуйста, дайте быстрый пример о том, как это будет сделано?

+8

[что-есть-вы испытанный] (http://mattgemmell.com/2008/12/08/what-have-you-tried/). – RanRag

ответ

4

Не знаю, почему я сделал это для вас. Чувство великодушно.

from random import randint 
import os 

nums = 10 
digits = 6 

for i in range(nums): 
    value = "".join([str(randint(0,9)) for _ in range(digits)]) 
    os.mkdir(value) 
+0

вы более щедры, чем вы понимаете, lol, im только начинающий, и это заняло у меня весь день: D lol many thanks – user1201080

+0

Все в порядке. Надеюсь, вы это понимаете. Он использует «понимание списка», два объекта «range» и итерацию 'for'. Посмотрите на них, они важны для понимания. – Joe

+0

Моя самая большая проблема с примерами и то, что iv читает, это заставить ее относиться к тому, что мне нужно от кода, теперь я получаю это: D плюс чтение для циклов снова с лучшим пониманием. снова большое спасибо;) – user1201080

0

Это достаточно легко с random и os модулей.

import random 
import os 

def random_n_digit(n): 
    return random.randint(10**(n-1), 10 ** n - 1) 

def create_dirs(digits = 6, numdirs = 10): 
    for i in xrange(numdirs): 
     os.mkdir(str(random_n_digit(digits))) 

create_dirs() 
1
>>> from os import mkdir 
>>> from random import randint 
>>> files = [str(randint(0, 10**6)).zfill(6) for _ in range(10)] 
>>> files 
['541053', '822700', '114954', '900634', '245858', '060055', '538329', '070579', '965626', '164178'] 
>>> for f in files: os.mkdir(f) 
+0

+1, хороший трюк с zfill –

0
from random import randint 
from os import mkdir 

total = 10 

# create a generator 
names = ('%06d' % randint(0,999999) for _ in xrange(total)) 
for name in names: 
    mkdir(name) 
+0

Должен сказать, я действительно озадачен о строке 'mkdir = os.mkdir'. Зачем? – Joe

+2

Эффективность. Он избавился от необходимости вводить символы 3, набрав 8 дополнительных символов. – chucksmash

+0

Вау, ты думаешь, почему я это сделал? Я собирался дать эффективный ответ. Если он будет генерировать гораздо больше каталогов, вы можете сделать это быстрее, удалив доступ к точечной нотации к члену mkdir: http: //wiki.python.org/moin/PythonSpeed/PerformanceTips#Avoiding_dots ... – jdi

Смежные вопросы