请帮我解决下面的代码并说明为什么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()
答案 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计算机上无法运行。