一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - Python復制目錄結構腳本代碼分享

Python復制目錄結構腳本代碼分享

2019-11-23 17:44junjie Python

這篇文章主要介紹了Python復制目錄結構腳本代碼分享,本文分析了需求、講解了匿名函數lambda等內容,并給出了腳本代碼,需要的朋友可以參考下

引言

  有個需要,需要把某個目錄下的目錄結構進行復制,不要文件,當目錄結構很少的時候可以手工去建立,當目錄結構復雜,目錄層次很深,目錄很多的時候,這個時候要是還是手動去建立的話,實在不是一種好的方法,弄不好會死人的。寫一個python腳本來處理吧。

首先了解

  寫python腳本前,先了解幾個東西

復制代碼代碼如下:

#!/usr/bin/python


這個東西寫過腳本的人都知道,用來標明該腳本的執行器,類似的還有

復制代碼代碼如下:


#!/bin/bash       通過bash來執行
#!/usr/local/php/bin/php 通過php執行器來執行    
 

 

# -*- coding: utf-8 -*-


這個是設置腳本的編碼格式,不然非英文可能會出現亂碼

 

匿名函數lambda

復制代碼代碼如下:

#lambda很好用,創建匿名函數很方便
g = lambda x,y : x+y
g(3,5) #返回8


匿名函數分為四部分,標識 lambda,分號 :,參數 x,y,操作 x+y

 

除了這個之外,還有函數map、filter一個進行映射,一個進行過濾

復制代碼代碼如下:

__name__=="__main__"


一個文件就是一個模塊,在python中每個模塊都有一個__name__屬性,屬性的值取決于如何使用該模塊,一般有兩種使用方式,直接在命令行運行,這個時候__name__值為__main__,當import使用的時候,__name__值就是當前模塊的名稱(不帶擴展名),因此可以通過這個判斷是否是直接在命令行運行程序,以便做一些腳本使用。

復制代碼代碼如下:

import os
import sys


還有這兩個模塊,os包含一些操作系統功能,比如說遍歷文件夾,拼接路徑等等,sys模塊包含系統函數,我這里只用來獲取腳本后面的參數

 

編碼

 

復制代碼代碼如下:


#!/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("源文件夾不存在")

 

使用

  使用很簡單:

復制代碼代碼如下:


#在當前文件夾下執行
./folders.py ./ /tmp/yyyyy

 

#執行完之后就會在/tmp下創建yyyyy目錄,目錄中包含上面的第一個文件夾中的目錄結構

 

這個地方有兩個要注意的地方,不能將創建后的目錄放在要復制的目錄中或者其子目錄中

總結

  在做這個的時候遇到了這個問題 /usr/bin/python^M: bad interpreter: No such file or directory ,這個問題看樣子是編碼的問題,在每行后面添加了個字符,查資料后,原來是由于我從windows下直接把程序復制到linux下的編碼出現了問題,解決方法很簡單:vi folders.py之后,在命令行下輸入

 

復制代碼代碼如下:


:set ff #結果表示編碼平臺,應該是fileformat=dos

 

:set fileformat=unix #設置編碼到unix平臺

:set ff #這個時候再去查看文件編碼,應該是fileformat=unix

 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美性xxxxx 欧美性bbbbbxxxxxddd | 免费观看国产大片资源视频 | 高中生放荡日记高h娜娜 | 午夜家庭影院 | 久久久久久免费观看 | 亚洲精品91 | 99人中文字幕亚洲区 | 亚洲精品一区二区久久久久 | 男生的j桶女人屁免费视频 男生操男生 | 亚洲青草视频 | 国产精品原创巨作无遮挡 | 欧美影院一区二区三区 | 放荡的女老板bd中文字幕 | 好大好爽好舒服视频 | 欧美日韩亚洲区久久综合 | 女教师雪白老汉 | 丝袜兔女郎被啪在线观看91 | 日本成人高清视频 | 日韩黄色影视 | 国产成人精品在线 | 日本卡1卡2卡4卡免费 | 欧美日韩精品一区二区三区视频在线 | 国产乱码免费卡1卡二卡3卡四 | 久久电影午夜 | 满溢游泳池免费 | 冰漪丰满大乳人体图片欣赏 | 亚洲国产精品久久卡一 | 欧美夫妇野外交换hd高清版 | 女子监狱第二季在线观看免费完整版 | 摸进老太婆的裤裆小说 | 女女性恋爱视频入口 | 国产精品一区二区三区免费 | 被巨大黑人的翻白眼 | 日韩av线观看 | 奇米影视奇米色777欧美 | 我的家教老师在线观看 | 精品国产一级在线观看 | 日本一区二区高清免费不卡 | 午夜一级视频 | 久久久96 | 色婷婷六月丁香在线观看 |