一:解析
sys.argv
import sys
# python3 run.py 1 2 3
# sys.argv 获取的是解释器后的参数值
print(sys.argv)
文件拷贝的原始方法
src_file = input('原文件路径:').strip()
dst_file = input('新文件路径:').strip()
with open(r'%s'%src_file, mode='rb') as read_f,\
open(r'%s'%dst_file, mode='wb') as write_f:
for line in read_f:
write_f.write(line)
文件拷贝的新方法
src_file = sys.argv[1]
dst_file = sys.argv[2]
with open(r'%s'%src_file, mode='rb') as read_f,\
open(r'%s'%dst_file, mode='wb') as write_f:
for line in read_f:
write_f.write(line)
二:进度条
# print('[%-50s]' %'#')
# print('[%-50s]' % '##')
# print('[%-50s]' % '###')
# 输出:
[# ]
[#
import time
res = ''
for i in range(50):
res += '#'
time.sleep(0.2)
print('\r [%-50s]' % res, end='')
# 输出: [##################################################]
进阶打印进度条
import time
recv_size = 0
total_size = 25600
while recv_size < total_size:
再次进阶打印进度条
import time
def progress(percent):
if percent > 1:
percent = 1
res = int(50 * percent) * '>'
print('\r [%-50s] %d%%' % (res,percent*100), end='')
recv_size = 0
total_size = 25600
while recv_size < total_size:
time.sleep(0.2)
recv_size += 1024
percent = recv_size / total_size
一:基本使用
shutil.copyfile( src, dst)
二:高级使用
shutil.copyfileobj(fsrc, fdst[, length]) 将文件内容拷贝到另一个文件中
import shutil
shutil.copyfileobj(open('old.xml','r'), open('new.xml', 'w'))
shutil.copyfile(src, dst) 拷贝文件
shutil.copyfile('f1.log', 'f2.log')
shutil.copymode(src, dst)仅拷贝权限。内容、组、用户均不变
shutil.copymode('f1.log', 'f2.log')
shutil.copystat(src, dst) 仅拷贝状态的信息,包括:mode bits, atime, mtime, flags
shutil.copystat('f1.log', 'f2.log')
shutil.copy(src, dst) 拷贝文件和权限
import shutil
shutil.copy('f1.log', 'f2.log')
shutil.copy2(src, dst) 拷贝文件和状态信息
import shutil
shutil.copy2('f1.log', 'f2.log')
shutil.ignore_patterns(*patterns)
shutil.copytree(src, dst, symlinks=False, ignore=None)
递归的去拷贝文件夹
import shutil
shutil.copytree('folder1', 'folder2', ignore=shutil.ignore_patterns('*.pyc', 'tmp*'))
import shutil
shutil.copytree('f1', 'f2', symlinks=True, ignore=shutil.ignore_patterns('*.pyc', 'tmp*'))
'''
通常的拷贝都把软连接拷贝成硬链接,即对待软连接来说,创建新的文件
'''
shutil.rmtree(path[, ignore_errors[, onerror]]) 递归的去删除文件
import shutil
shutil.rmtree('folder1')
shutil.move(src, dst) 递归的去移动文件,它类似mv命令,其实就是重命名。
import shutil
shutil.move('folder1', 'folder3')
创建压缩包并返回文件路径,例如:zip、tar
创建压缩包并返回文件路径,例如:zip、tar
base_name: 压缩包的文件名,也可以是压缩包的路径。只是文件名时,则保存至当前目录,否则保存至指定路径,
如 data_bak =>保存至当前路径
如:/tmp/data_bak =>保存至/tmp/
format: 压缩包种类,“zip”, “tar”, “bztar”,“gztar”
root_dir: 要压缩的文件夹路径(默认当前目录)
owner: 用户,默认当前用户
group: 组,默认当前组
logger: 用于记录日志,通常是logging.Logger对象
#将 /data 下的文件打包放置当前程序目录
import shutil
ret = shutil.make_archive("data_bak", 'gztar', root_dir='/data')
#将 /data下的文件打包放置 /tmp/目录
import shutil
ret = shutil.make_archive("/tmp/data_bak", 'gztar', root_dir='/data')
shutil 对压缩包的处理是调用 ZipFile 和 TarFile 两个模块来进行的,详细:
import zipfile
# 压缩
z = zipfile.ZipFile('laxi.zip', 'w')
z.write('a.log')
z.write('data.data')
z.close()
# 解压
z = zipfile.ZipFile('laxi.zip', 'r')
z.extractall(path='.')
z.close()
import tarfile
# 压缩
>>> t=tarfile.open('/tmp/egon.tar','w')
>>> t.add('/test1/a.py',arcname='a.bak')
>>> t.add('/test1/b.py',arcname='b.bak')
>>> t.close()
# 解压
>>> t=tarfile.open('/tmp/egon.tar','r')
>>> t.extractall('/egon')
>>> t.close()