Python目录结构

时间:2012-05-22 13:35:33

标签: python directory

我正在尝试创建一个包含表示月份的子目录的年份目录结构,即

  • 2012
    • 01
    • 02
    • 03

我的代码是这样的:

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

请有人就此提供一些信息 谢谢

4 个答案:

答案 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)