我正在尝试创建一个包含表示月份的子目录的年份目录结构,即
我的代码是这样的:
newpath = "test"
for year in range(2000, 2013):
for month in range(1, 13):
newpath += str(year)+'\\'+str(month)
if not os.path.exists(newpath):
os.makedirs(newpath)
我收到错误
OSError: [Errno 2] No such file or directory: 'test\\2000\\1
请有人就此提供一些信息 谢谢
答案 0 :(得分:4)
str(1)
返回1
,而不是01
。做"%02d" % month
。
(并考虑使用os.path.join
来构建路径字符串。)
答案 1 :(得分:1)
newpath += str(year)+'\\'+str(month)
在每次迭代时将新字符附加到同一个字符串,这不是您想要的。
试试这个:
root_path = "test"
for year in range(2000, 2013):
for month in range(1, 13):
newpath = os.path.join(root_path, '{0:04}'.format(year), '{0:02}'.format(month))
if not os.path.exists(newpath):
os.makedirs(newpath)
os.path.join
将在您的操作系统上正确构建路径名。
答案 2 :(得分:0)
您的newpath
将
test2000\12000\22000\32000\42000\52000\62000\72000\82000\92000\102000\112000\122001\12001\22001\32001\42001\52001\62001\72001\82001\92001\102001\112001\122002\12002\22002\32002\42002\52002\62002\72002\82002\92002\102002\112002\122003\12003\22003\32003\42003\52003\62003\72003\82003\92003\102003\112003\122004\12004\22004\32004\42004\52004\62004\72004\82004\92004\102004\112004\122005\12005\22005\32005\42005\52005\62005\72005\82005\92005\102005\112005\122006\12006\22006\32006\42006\52006\62006\72006\82006\92006\102006\112006\122007\12007\22007\32007\42007\52007\62007\72007\82007\92007\102007\112007\122008\12008\22008\32008\42008\52008\62008\72008\82008\92008\102008\112008\122009\12009\22009\32009\42009\52009\62009\72009\82009\92009\102009\112009\122010\12010\22010\32010\42010\52010\62010\72010\82010\92010\102010\112010\122011\12011\22011\32011\42011\52011\62011\72011\82011\92011\102011\112011\122012\12012\22012\32012\42012\52012\62012\72012\82012\92012\102012\112012\12
在你的上一次迭代中。您无需附加到newpath
。
答案 3 :(得分:0)
您没有在循环中重置newpath
。这样的事情会更好:
for year in range(2000, 2013):
for month in range(1,13):
newpath = os.path.join("test", str(year), "%02d"%(month,)
if not os.path.exists(newpath):
os.makedirs(newpath)