引言
有個需要,需要把某個目錄下的目錄結構進行復制,不要文件,當目錄結構很少的時候可以手工去建立,當目錄結構復雜,目錄層次很深,目錄很多的時候,這個時候要是還是手動去建立的話,實在不是一種好的方法,弄不好會死人的。寫一個python腳本來處理吧。
首先了解
寫python腳本前,先了解幾個東西
# -*- coding: utf-8 -*-
匿名函數lambda
除了這個之外,還有函數map、filter一個進行映射,一個進行過濾
編碼
import os
import sys
source = os.path.realpath(sys.argv[1])
target = os.path.realpath(sys.argv[2])
def isdir(x):
return os.path.isdir(x) and x != '.svn'
def mkfloders(src,tar):
paths = os.listdir(src)
paths = map(lambda name:os.path.join(src,name),paths)
paths = filter(isdir, paths)
if(len(paths)<=0):
return
for i in paths:
(filepath, filename)=os.path.split(i)
targetpath = os.path.join(tar,filename)
not os.path.isdir(targetpath) and os.mkdir(targetpath)
mkfloders(i,targetpath)
if __name__=="__main__":
if(os.path.isdir(source)):
if(target.find(source) == 0):
print("不能將生成的新目錄放在源目錄下")
else:
if not os.path.isdir(target):
os.mkdir(target)
mkfloders(source,target)
else:
print("源文件夾不存在")
使用
使用很簡單:
#執行完之后就會在/tmp下創建yyyyy目錄,目錄中包含上面的第一個文件夾中的目錄結構
這個地方有兩個要注意的地方,不能將創建后的目錄放在要復制的目錄中或者其子目錄中
總結
在做這個的時候遇到了這個問題 /usr/bin/python^M: bad interpreter: No such file or directory ,這個問題看樣子是編碼的問題,在每行后面添加了個字符,查資料后,原來是由于我從windows下直接把程序復制到linux下的編碼出現了問題,解決方法很簡單:vi folders.py之后,在命令行下輸入
:set fileformat=unix #設置編碼到unix平臺
:set ff #這個時候再去查看文件編碼,應該是fileformat=unix
新聞熱點
疑難解答
圖片精選