Python復制目錄結(jié)構(gòu)腳本代碼分享
引言
有個需要,需要把某個目錄下的目錄結(jié)構(gòu)進行復制,不要文件,當目錄結(jié)構(gòu)很少的時候可以手工去建立,當目錄結(jié)構(gòu)復雜,目錄層次很深,目錄很多的時候,這個時候要是還是手動去建立的話,實在不是一種好的方法,弄不好會死人的。寫一個python腳本來處理吧。
首先了解
寫python腳本前,先了解幾個東西
#!/usr/bin/python
這個東西寫過腳本的人都知道,用來標明該腳本的執(zhí)行器,類似的還有
#!/bin/bash 通過bash來執(zhí)行
#!/usr/local/php/bin/php 通過php執(zhí)行器來執(zhí)行
# -*- coding: utf-8 -*-
這個是設置腳本的編碼格式,不然非英文可能會出現(xiàn)亂碼
匿名函數(shù)lambda
#lambda很好用,創(chuàng)建匿名函數(shù)很方便
g = lambda x,y : x+y
g(3,5) #返回8
匿名函數(shù)分為四部分,標識 lambda,分號 :,參數(shù) x,y,操作 x+y
除了這個之外,還有函數(shù)map、filter一個進行映射,一個進行過濾
__name__=="__main__"
一個文件就是一個模塊,在python中每個模塊都有一個__name__屬性,屬性的值取決于如何使用該模塊,一般有兩種使用方式,直接在命令行運行,這個時候__name__值為__main__,當import使用的時候,__name__值就是當前模塊的名稱(不帶擴展名),因此可以通過這個判斷是否是直接在命令行運行程序,以便做一些腳本使用。
import os
import sys
還有這兩個模塊,os包含一些操作系統(tǒng)功能,比如說遍歷文件夾,拼接路徑等等,sys模塊包含系統(tǒng)函數(shù),我這里只用來獲取腳本后面的參數(shù)
編碼
#!/usr/bin/python
# -*- coding: utf-8 -*-
#Filename:floders.py
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("源文件夾不存在")
使用
使用很簡單:
#在當前文件夾下執(zhí)行
./folders.py ./ /tmp/yyyyy
#執(zhí)行完之后就會在/tmp下創(chuàng)建yyyyy目錄,目錄中包含上面的第一個文件夾中的目錄結(jié)構(gòu)
這個地方有兩個要注意的地方,不能將創(chuàng)建后的目錄放在要復制的目錄中或者其子目錄中
總結(jié)
在做這個的時候遇到了這個問題 /usr/bin/python^M: bad interpreter: No such file or directory ,這個問題看樣子是編碼的問題,在每行后面添加了個字符,查資料后,原來是由于我從windows下直接把程序復制到linux下的編碼出現(xiàn)了問題,解決方法很簡單:vi folders.py之后,在命令行下輸入
:set ff #結(jié)果表示編碼平臺,應該是fileformat=dos
:set fileformat=unix #設置編碼到unix平臺
:set ff #這個時候再去查看文件編碼,應該是fileformat=unix
相關文章
Python-copy()與deepcopy()區(qū)別詳解
這篇文章主要介紹了Python-copy()與deepcopy()區(qū)別詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-07-07Python 統(tǒng)計數(shù)據(jù)集標簽的類別及數(shù)目操作
這篇文章主要介紹了Python 統(tǒng)計數(shù)據(jù)集標簽的類別及數(shù)目操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-05-05python爬蟲開發(fā)之Beautiful Soup模塊從安裝到詳細使用方法與實例
這篇文章主要介紹了python爬蟲開發(fā)之Beautiful Soup模塊詳細使用方法與實例,需要的朋友可以參考下2020-03-03Keras中的兩種模型:Sequential和Model用法
這篇文章主要介紹了Keras中的兩種模型:Sequential和Model用法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06python GUI庫圖形界面開發(fā)之PyQt5日期時間控件QDateTimeEdit詳細使用方法與實例
這篇文章主要介紹了python GUI庫圖形界面開發(fā)之PyQt5日期時間控件QDateTimeEdit詳細使用方法與實例,需要的朋友可以參考下2020-02-02numpy中以文本的方式存儲以及讀取數(shù)據(jù)方法
今天小編就為大家分享一篇numpy中以文本的方式存儲以及讀取數(shù)據(jù)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-06-06