国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

python——復制目錄結構小腳本

2019-11-14 17:21:47
字體:
來源:轉載
供稿:網友

引言

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

首先了解

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

#!/usr/bin/python

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

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

 

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

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

 

匿名函數lambda

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

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

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

 

__name__=="__main__"

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

import osimport sys

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

編碼

#!/usr/bin/python# -*- coding: utf-8 -*-#Filename:floders.pyimport osimport syssource = 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

參考文章

  http://m.survivalescaperooms.com/xuxm2007/archive/2010/08/04/1792463.html(了解python中的__name__)

  http://www.blogjava.net/nkjava/archive/2009/06/10/281064.html(dos文件格式修改為unix文件格式)

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 巴塘县| 泸西县| 平果县| 永善县| 明光市| 石城县| 海兴县| 灵寿县| 吉安市| 黔东| 勃利县| 新民市| 邹平县| 县级市| 礼泉县| 衡阳县| 应城市| 河曲县| 永平县| 金寨县| 岳普湖县| 云浮市| 浮山县| 宁海县| 沂水县| 河池市| 扎囊县| 太白县| 青铜峡市| 运城市| 翼城县| 九寨沟县| 师宗县| 府谷县| 旌德县| 红安县| 华宁县| 红安县| 沭阳县| 汪清县| 乌拉特后旗|