创建多个目录

时间:2014-11-07 01:29:05

标签: python directory mkdir

我正在尝试创建多个子目录并将文件移动到这些子目录中,将子目录命名为它所在的循环数,这就是我所拥有的:

for x in range(1,20):
     os.makedirs('{}/'.format(replace)+str(x)+'/')
     shutil.move(filename,'{}/'.format(replace)+str(x)+'/')
     shutil.move(filename1,'{}/'.format(replace)+str(x)+'/')

我收到此错误:

 File "testdraft.py", line 285, in findReplace
    shutil.move(f, '{}/'.format(replace)+str(x)+'/')
  File "/usr/lib/python2.7/shutil.py", line 284, in move
    if _samefile(src, dst):
  File "/usr/lib/python2.7/shutil.py", line 58, in _samefile
    return os.path.samefile(src, dst)
  File "/usr/lib/python2.7/posixpath.py", line 162, in samefile
    s1 = os.stat(f1)
TypeError: coercing to Unicode: need string or buffer, file found

感谢您的帮助

2 个答案:

答案 0 :(得分:0)

大概你的f文件对象,而不是文件名。

您实际上没有向我们展示使用shutil.move调用f的任何代码;你向我们展示了用名为filename1的东西调用它的代码。但是变量的名称是什么并不重要;如果您从中获取的文件对象(例如open函数)保留了它,则不能将其与move一起使用。

希望您的真实代码与以下内容一样简单:

with open(out_path, 'w') as f:
    write_data(f)
shutil.move(f, '{}/'.format(replace)+str(x)+'/')

然后,您只想将最后一行中的f更改为out_path,然后就完成了。

答案 1 :(得分:0)

看起来你的filename或filename1变量实际上不是文件名,而是文件对象。 (这是"文件找到的内容"在您的错误结束时试图告诉您。)

此外,您可能需要考虑不首先创建目录:

  

shutil.move(src, dst):

     

目标目录不得已存在。如果是目的地   已存在但不是目录,可能会被覆盖   在os.rename()语义上。