因為之前有同事說Linux 下的cp 無法排除特定目錄,所以我就用python2.7 寫了隻 ohCP
給他用
#!/usr/bin/python2.7
import os,time,shutil,argparse,sys
def exculde_cp(source,dest,exclude):
print(source)
if os.path.isdir(source) == True or os.path.isfile(source)==False:
print(source)
dirnames=os.listdir(source)
for dirname in dirnames:
print(dirname)
srcname=os.path.join(source,dirname)
dstname=os.path.join(dest,dirname)
try:
if srcname == exclude:
pass
elif os.path.islink(srcname):
print('detect dirs has some links')
linkto = os.readlink(srcname)
os.symlink(linkto, dstname)
else:
print('begin copy dir',dirname)
shutil.copytree(srcname,dstname)
except (IOError, os.error) as why:
print('some errors',why)
elif os.path.isdir(source) == False or os.pathisfile(source):
try:
shutil.copy2(source,dest)
except (IOError, os.error) as why:
print('some errors',why)
###
def cop(source,dest):
if os.path.isdir(source) == True or os.path.isfile(source)==False:
print(source)
dirnames=os.listdir(source)
for dirname in dirnames:
print(dirname)
srcname=os.path.join(source,dirname)
dstname=os.path.join(dest,dirname)
try:
if os.path.islink(srcname):
print('detect dirs has some links')
linkto = os.readlink(srcname)
os.symlink(linkto, dstname)
else:
print('begin copy dir',dirname)
shutil.copytree(srcname,dstname)
except (IOError, os.error) as why:
print('some errors',why)
elif os.path.isdir(source) == False or os.pathisfile(source):
try:
print('copy file from:',source,'to dest:',dest )
shutil.copy2(source,dest)
except (IOError, os.error) as why:
print('some errors',why)
parser = argparse.ArgumentParser()
parser.add_argument('-src:', dest='src',help='ohCP.py -src: /home/usera/ -dst: /home/userb',nargs='*')
parser.add_argument('-dst:', dest='dst',help='ohCP.py -src: /home/usera/ -dst: /home/userb',nargs='*')
parser.add_argument('-exclude:',dest='exclude',help='ohCP.py -src: /home/usera/ -dst: /home/userb -exclude: /home/usera/userc',nargs='*')
try:
parameter=parser.parse_args()
source=parameter.src
dest=parameter.dst
exclude=parameter.exclude
print(parameter)
except TypeError:
print('Input ohCP.py -help')
if source is not None and dest is not None and exclude is not None:
exculde_cp(source[0],dest[0],exclude[0])
elif exclude is not None and source is not None and dest is not None:
cop(source[0],dest[0])
else:
print('type ohCP.py -help')
搜尋此網誌
2013年6月30日 星期日
2013年3月17日 星期日
How to use python replace a word as sed does
import os,fileinput
changing_file_dst='/Users/Hermes/Downloads/srt.txt' changefile=fileinput.input(changing_file_dst, inplace=1)
# <==this is part very import if you just fileinput.input(change_file_dst) data will not modified , so you need set inplace=1 to modify current file
for st in changefile:
replace_str='cluster.enabled=true'
pattern='cluster.enabled=false'
result=st.replace(pattern,replace_str)
print(result) changefile.close()
original I just want use open , but when I write all file will be truncate and write . so I use fileinput.
原本是用open 將檔案 打開修改可是用 W mode 會因為先作truncated , 再寫入所以檔案會被清空 ,所以改用 fileinput 直接作修改
changing_file_dst='/Users/Hermes/Downloads/srt.txt' changefile=fileinput.input(changing_file_dst, inplace=1)
# <==this is part very import if you just fileinput.input(change_file_dst) data will not modified , so you need set inplace=1 to modify current file
for st in changefile:
replace_str='cluster.enabled=true'
pattern='cluster.enabled=false'
result=st.replace(pattern,replace_str)
print(result) changefile.close()
original I just want use open , but when I write all file will be truncate and write . so I use fileinput.
原本是用open 將檔案 打開修改可是用 W mode 會因為先作truncated , 再寫入所以檔案會被清空 ,所以改用 fileinput 直接作修改
訂閱:
文章 (Atom)