使用Python以与文件名匹配的文件夹名称递归创建文件夹

时间:2019-01-31 08:53:06

标签: python

是否有Python方法来递归创建目录?我有这条路:

/ home / data /中包含文件“ table1.csv”,“ table2.csv”,...,“ table1000.csv”

我想创建: / home / data / table1并在其中移动“ table1.csv”; / home / data / table2并在其中移动“ table2.csv”; 。 。 。 / home / data / table1000并在其中移动“ table1000.csv”;

文件夹名称必须与csv文件名称匹配。

我该如何递归执行?我知道应该使用os.makedirs()不确定它的工作原理。

非常感谢。

注意:'table1'和'table2'等只是虚拟的示例文件名。实际的文件名有点复杂。

2 个答案:

答案 0 :(得分:1)

使用mkdiros库创建每个目录。

https://docs.python.org/2/library/os.html

对于每个目录,请使用shutil.move移动当前文件。

How to move a file in Python

每次迭代应如下所示:

for i in range(1, 1001):
    os.mkdir('/home/data/table' + str(i))
    shutil.move('/home/data/table' + str(i) + '.csv', '/home/data/table' + str(i) + '/table' + str(i) + '.csv')

答案 1 :(得分:1)

我将以以下方式在Python中工作:

1。获取列表中文件夹中的所有文件

2。遍历列表的文件名和:

  1. 使用正确的名称创建文件夹(前提是您没有重复的名称)
  2. 在文件夹中移动文件
  3. 下一个文件

在网上进行简单的搜索就会为您准备好完成上述每一步的示例。

编辑:下面是一个简单的csv文件示例。

import glob, os
import shutil
dir="D:\Dropbox\MYDOCS\DEV\python\snippets"
os.chdir(dir)
for file in glob.glob("*.csv"):
    dst=dir+"\\"+file.replace(" ","_").replace(".csv","")
    os.mkdir(dst)
    print(dst)
    shutil.move(file,dst)

使用的Windows路径,由于我使用Windows,因此您需要将其更改为Linux路径。