为什么这不起作用? (os.makedirs)

时间:2016-03-19 14:25:41

标签: python

请帮我解决下面的代码并说明为什么os.makedirs不起作用? (请不要处理缩进:它们在原始版本中是正确的,因为我正在掌握本网站上的HTML编码。)

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 个答案:

答案 0 :(得分: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"只是为了点击break退出while而不处理makedirs if-spaghetti。我没有深入挖掘......

实现目标的更好方法是从头开始,重新思考,然后从头开始实现它,避免所有繁琐的重复和代码中的陷阱:

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计算机上的代码,您将发现它可以跨平台工作,而您的代码在我的Linux计算机上无法运行。