2016-03-19 31 views
-5

下記のコードを解決し、なぜos.makedirsが機能しないのかを教えてください。 (インデントの世話をしないでください:彼らは右の元にちょうど私はこのサイト上のHTMLコーディングの上にグリップを取得していた)これはなぜ機能しないのですか? (os.makedirs)

import os,pprint,sys 
while True: 
    print() 
    oq=input('Press the first directory: ') 
    print() 
    print() 
    ow=input('Press the next directory/name: ') 
    print() 
    p2=input('Continue with next directory? yes or no: ').lower() 
    if p2=='no': 
     break 
    print() 
    oe=input('Press the next directory/name: ') 
    print() 
    p3=input('Continue with next directory? yes or no: ').lower() 
    if p3=='no': 
     break 
    print() 
    oee=input('Press the next directory/name: ') 
    print() 
    p4=input('Continue with next directory? yes or no: ').lower() 
    if p4=='no': 
     break 
    print() 
    ot=input('Press the next directory/name: ') 
    print() 
    p5=input('Continue with next directory? yes or no: ').lower() 
    if p5=='no': 
     break 
    print() 
    oy=input('Press the next directory/name: ') 
    print() 
    p6=input('Continue with next directory? yes or no: ').lower() 
    if p6=='no': 
     break 
    print() 
    ou=input('Press the next directory/name: ') 
    print() 
    p7=input('Continue with next directory? yes or no: ').lower() 
    if p7=='no': 
     break 
    print() 
    if p2=='no': 
     os.makedirs(oq+'\\'+ow) 
    if p3=='no': 
     os.makedirs(oq+'\\'+ow+'\\'+oe) 
    if p4=='no': 
     os.makedirs(oq+'\\'+ow+'\\'+oe+'\\'+oee)) 
    if p5=='no': 
     os.makedirs(oq+'\\'+ow+'\\'+oe+'\\'+oee+'\\'+ot) 
    if p6=='no': 
     os.makedirs(oq+'\\'+ow+'\\'+oe+'\\'+oee+'\\'+ot+'\\'+oy) 
    if p7=='no': 
     os.makedirs(oq+'\\'+ow+'\\'+oe+'\\'+oee+'\\'+ot+'\\'+oy+'\\'+ou) 
    ppp=input('Wannna continue???') 
    if ppp=='no': 
     sys.exit() 
+1

コードを読みやすいように書式設定したいと思うでしょう。そのような巨大な束にそれを貼り付けることは、あなたの質問に通常答える人々を、それによって右にスキップさせる可能性が高いでしょう。投稿のためのコード書式ヘルプセクションを見直し、編集/再投稿することをお勧めします。 – Chris

+0

私はあなたが気にしないことを願っています...しかし、私はあなたのインデントを世話しました。私は、残りの部分との関係で各行を同じように保っていました。私がやったことをするには、コードをハイライトし、Ctrl-kを押します。 – zondo

+0

「状況によっては動作しない」実際にそこに入るのを見るためにコードにデバッグメッセージを入れましたか? '\\\'をハードコーディングする代わりに 'os.path.join()'をパスに、 'os.sep'をセパレータとして使用してください。 – yedpodtrzitko

答えて

0

あなたは構文を持っているので、あなたのコードも実行されませんあなたのコード内のエラー:

if p3=='no': 
    os.makedirs(oq+'\\'+ow+'\\'+oe) 
if p4=='no': 
    os.makedirs(oq+'\\'+ow+'\\'+oe+'\\'+oee)) # <-- here 
if p5=='no': 
    os.makedirs(oq+'\\'+ow+'\\'+oe+'\\'+oee+'\\'+ot) 

実際:

$ python machdirs2.py 
    File "machdirs2.py", line 48 
    os.makedirs(oq+'\\'+ow+'\\'+oe+'\\'+oee)) 
             ^
SyntaxError: invalid syntax 
$ 

あなたは、その構文エラーを修正するとき、我々はあなたが引用するあなたを必要とするinputを使用していることがわかりあなたの"input"私はそれを実行し、"no"のを打つだけで、を終了し、if-spaghettiを処理しないまま引用符で囲んだディレクトリ名を入力しました。私はあなたの目的は、すべてやり直す再考して、あなたのコード内のすべてのtediuous繰り返しや落とし穴を避け、最初からそれを実装することです達成するためのより良い方法...

を深く掘っていない:

import os 

path = "" 
while True: 
    nxt = raw_input("next level or empty to quit: ") 
    if not nxt: 
     break 
    path = os.path.join(path, nxt) 

print path 
os.makedirs(path) 
その結果

$ python machdirs.py 
next level or empty to quit: a 
next level or empty to quit: b 
next level or empty to quit: c 
next level or empty to quit: 
a/b/c 
$ find . -type d -print 
. 
./a 
./a/b 
./a/b/c 
$ 

は、Windowsマシン上のコードを試してみて、あなたはあなたのコードのyouldは私のLinuxマシン上で動作していない間、それはクロスプラットフォームを動作することを確認できます。

+0

まあ、全部を2つの部分に分けて解決しました。最初の部分はディレクトリとファイル名の名前をとり、2番目の部分はフォルダを作成します。私はそれらを真のコマンドの下に置き、p2 == 'no'ならばグローバルp2を置く:グローバルp2ブレークなど。それはあなたの答えのために助けてくれてありがとう、私もそれらを試してみます。 – Gourabo

関連する問題