模拟数据库结构

时间:2013-06-25 06:05:31

标签: python database unix

我正在编写一个重命名数据库中大部分文件夹的脚本。材料非常敏感,我真的不喜欢在原始数据库中使用脚本。我希望只复制结构并用模拟结构测试脚本。

经过一夜糟糕的睡眠后得到这个想法,这是否可行?:)

在unix中使用python

3 个答案:

答案 0 :(得分:2)

以下代码会将a的结构复制到b

import os

def dup_structure(src, dst):
    os.makedirs(dst)
    for p, ds, fs in os.walk(src):
        for dn in ds:
            dp = os.path.relpath(os.path.join(p, dn), src)
            os.makedirs(os.path.join(dst, dp))
        #for fn in fs:
        #    fp = os.path.relpath(os.path.join(p, fn), src)
        #    with open(os.path.join(dst, fp), 'wb'): pass

dup_structure('a', 'b')
  • 运行前确保目录b不存在。
  • 此代码执行重复文件。如果您需要重复文件,请取消注释注释行。

重命名目录时,应该从下到上遍历目录。

答案 1 :(得分:0)

我建议你将这个shell脚本作为文件夹重构程序测试设置的一部分

cd /mytest/; find /folder/with/database -type d -print0 | xargs -0 mkdir -p 

工作原理: chdir到目标你想要空文件夹的副本去

find命令使用“实时”数据库的绝对路径

type d仅为目录

print0表示处理包含空格的名称

是安全的

xargs执行为stdin

输入的每个参数指定的命令

mkdir的-p参数不是严格需要的,但会在目标

之上创建不存在的文件夹

如果这是我的项目,我每次运行自动化测试套件时都会这样做

答案 2 :(得分:0)

即使没有编程也可以使用标准的unix实用程序。只需创建一个目录结构的tar存档,并在任何地方和你想要的地方展开它(将a的结构复制到b):

cd a
find . -type d | xargs tar --no-recursion -r -f ../a.tar
cd ..
mkdir b
cd b
tar xf ../a.tar