2017-07-31 9 views
0

したがって、今日の日付と3つの整数のユーザ選択でディレクトリを作成しています。 このディレクトリ内に、私はより多くのサブフォルダを作成したいが、一つだけのサブのために「ARI」フォルダをフォルダARI、エール、CDL、MXF、レポートなどなど特定のサブフォルダ内にサブフォルダを作成

命名され、作成されるサブフォルダの数を持っている。

どのように私は「本体」と「秒単位」という名前のフォルダを作成するよう指定します

以下

は、私がこれまで行っているものです - 任意の助けに感謝:)

#!/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7 
from __future__ import print_function 
import os 
import datetime 


try: #Handle Python 2.7 
    input = raw_input 
except NameError: 
    pass 

deepfolders = ("Main Unit", "Second Unit") 
subfolders = ("ari", "sound", "cdl" , "mxf" , "h264" , "reports" , "ale") 
parent_format = "{0:03d}_{1:%y%m%d}_Unit_Project" 
path = ('/Volumes/Macintosh HD/Users/thenightfactory/Documents') 
path2 = ('/Volumes/Macintosh HD/Users/thenightfactory/Pictures') 
os.chdir(path) 

from datetime import datetime 

weekday = datetime.strftime(datetime.now(), "%A") 

print ("") 
print ("Hello, Happy " + weekday + "! Please Select A Shooting Day To Create Today's Folders:") 
print ('\033[91m' + "This will only work until midnight and can only be three integers eg. 023" + '\033[0m') 
print("=" * 80) 

while True: 
    try: 
     shootnum = (int(input("Enter today's shoot number > "))) 
    shootnum = (str(shootnum)) 
    shootnum = int(shootnum[:3]) 

    successful= True 
    if successful: 
     print ("") 
     print ('\033[91m' + "Folder's Have Been Created, Good Luck Shooting!" + '\033[0m') 
     print ("") 
    break 
    except ValueError: 
     print('\033[91m' + "Invalid number, please try again." + '\033[0m') 

import datetime 

parentpath = parent_format.format(shootnum, datetime.datetime.now()) 
if not os.path.exists(parentpath): 
    os.makedirs(parentpath) 
    for subfolder in subfolders: 
     os.makedirs(os.path.join(parentpath, subfolder)) 

os.chdir(path2) 
parentpath = parent_format.format(shootnum, datetime.datetime.now()) 
if not os.path.exists(parentpath): 
    os.makedirs(parentpath) 
    for subfolder in subfolders: 
     os.makedirs(os.path.join(parentpath, subfolder)) 
+0

'os.chdir'でディレクトリを' ari'に変更し、 'os.mkdir(NAME)'でディレクトリを作成してみませんか? –

答えて

2

(半)一般的な解決策が必要だと仮定すると、 1つの方法で問題を解決するには、結合で複数の引数を取ることができるので、すべてのビットを一緒に結合するだけです。 'ari'サブフォルダで実行している場合このように、余分なループを追加します。これに

deepsubs = ['ari'] 
if not os.path.exists(parentpath): 
    os.makedirs(parentpath) 
    for subfolder in subfolders: 
     os.makedirs(os.path.join(parentpath, subfolder)) 
     if subfolder in deepsubs: 
      for deepfolder in deepfolders: 
       os.makedirs(os.path.join(parentpath, subfolder, deepfolder)) 
1

私のアプローチは、単にサブフォルダ値のチェックを持っており、それまで降下し、必要なディレクトリを作成します。

parentpath = parent_format.format(shootnum, datetime.datetime.now()) 
if not os.path.exists(parentpath): 
    os.makedirs(parentpath) 
    for subfolder in subfolders: 
     pwd = os.getcwd() 
     os.makedirs(os.path.join(parentpath, subfolder)) 
     # Checking in list in case you want todo same for multiple dir 
     # else just eqality check would do 
     if subfolder in ['ari']: 
      os.chdir(os.path.join(parentpath, subfolder)) 
      for df in deepfolders: 
       os.makedirs(os.path.join(parentpath, subfolder, df)) 
      os.chdir(pwd) 

これがあなたが探していたものでない場合は教えてください。

+1

あなたは 'subdir'にそれを割り当てた後、' os.path.join(parentpath、subfolder) 'を二度使用します。 – asongtoruin

+0

:-)私は持ってはいけない場所に使っていました。一定。 – skjoshi

+0

これを試してみると、023_170731_UNIT_Project> Ari> 023_170731_UNIT_Project> 023_170731_UNIT_Project(他のフォルダ)とari(本体と2番目のユニットフォルダ)のフォルダ構造 –

関連する問題