python脚本常用

tuple 不可变
list append(obj)、insert([i],obj)、+/pop(i)、remove(obj)/list[i]
set add(obj)/remove(obj)、集合操作
dict update(dict)/pop(key)/get(key,[default])、dict[key] items()\keys()\values

list[0:3] 为第0,1,2个元素
list[0:-1] 从第0个到倒数第一个(不包含倒数第一个)
list[0:] 从第0个到最后一个
range(0,3) 为第0,1,2个元素
range(0,3,2) 第三个参数为间隔为2

一、路径

  1. os.sep:取代操作系统特定的路径分隔符
  2. os.name:指示你正在使用的工作平台。比如对于Windows,它是’nt’,而对于Linux/Unix用户,它是’posix’。
  3. os.getenv()和os.putenv:分别用来读取和设置环境变量
  4. os.remove(file):删除一个文件
  5. os.stat(file):获得文件属性
  6. os.chmod(file):修改文件权限和时间戳(具体:https://www.runoob.com/python/os-chmod.html)
  7. os.mkdir(name):创建目录
  8. os.makedirs():递归文件夹创建函数。
  9. os.rmdir(name):删除目录
  10. os.removedirs(r“c:\python”):删除多个目录
  11. os.system():运行shell命令
  12. os.exit():终止当前进程
  13. os.linesep:给出当前平台的行终止符。例如,Windows使用’\r\n’,Linux使用’\n’而Mac使用’\r’
  14. os.listdir(dirname):列出dirname下的目录和文件
  15. os.getcwd():获得当前工作目录 (绝对路径)
  16. os.curdir:返回当前目录(相对路径)
  17. os.chdir(dirname):改变工作目录到dirname
  18. os.symlink(src, dst):创建软连接。os.link():创建硬链接。
  19. os.path.isfile()和os.path.isdir()分别检验给出的路径是一个目录还是文件
  20. os.path.split():返回一个路径的目录名和文件名
  21. os.path.isdir(name):判断name是不是目录,不是目录就返回false
  22. os.path.isfile(name):判断name这个文件是否存在,不存在返回false
  23. os.path.exists(name):判断是否存在文件或目录name
  24. os.path.getsize(name):或得文件大小,如果name是目录返回0L
  25. os.path.abspath(name):获得绝对路径
  26. os.path.isabs():判断是否为绝对路径
  27. os.path.normpath(path):规范path字符串形式
  28. os.path.split(name):分割文件名与目录(事实上,如果你完全使用目录,它也会将最后一个目录作为文件名而分离,同时它不会判断文件或目录是否存在)
  29. os.path.splitext():分离文件名和扩展名
  30. os.path.join(path,name):连接目录与文件名或目录
  31. os.path.basename(path):返回文件名
  32. os.path.dirname(path):返回文件路径

二、读写

读取

  1. file=open(‘path’) 读取获取文件
  2. content=file.read() 将文件存放在content中
  3. file.readline() 读取一行
  4. file.readlines() 读取所有行存放在list中
  5. file.close() 关闭流
  6. 注意:一个file=open(‘path’)文件读取后,读取的内容删除。

写入

  1. file=open(‘path’,‘w’) 以写入模式获取文件
  2. file=open(‘path’,‘a’) 以append模式获取文件
  3. file.write(‘some content’) 写入内容
  4. file.close() 关闭流

三、组织文件

  1. shutil.copy(src,dst) 注意dst如果是文件名,则重命名成该文件名,如果dst是文件夹,则保持原来的名字,src不能是文件夹(注意dst路径必须存在)

  2. shutil.copyfile(src,dst) 拷贝文件,dst必须指定文件名,且路径必须存在,与mv命令相似。

  3. shutil.copytree(src,dst) 复制文件树。如果src是文件夹则复制src内部的文件树,如果是文件则复制该文件。注意dst路径不能已经存在

  4. shutil.move(src,dst) 移动改名文件。如果src是文件夹则复制src本身的文件树。如果src是文件,如果dst不存在就将文件名重新命名为dst,与mv命令相似。

  5. shutil.rmtree(‘path’) 删除path处的文件树。如果是文件夹,则删除path本身的文件树

  6. os.walk(‘path’) 返回path的当前文件夹名称、子文件夹名称list、子文件名称list

  7. shutil.make_archive(“shutil_archive_test”,“zip”,“D:\新建文件夹”) 可以压缩,打包文件。

    格式:shutil.make_archive(base_name, format[, root_dir[, base_dir, verbose, dry_run, owner, group, logger])  
     
     base_name:压缩包的文件名,也可以是压缩包的路径。只是文件名时,则保存至当前目录,否则保存至指定路径,
     format:	压缩包种类,“zip”, “tar”, “bztar”,“gztar”
     root_dir:要压缩的文件夹路径(默认当前目录)
     owner:用户,默认当前用户
     group:组,默认当前组
     logger:用于记录日志,通常是logging.Logger对象
     
     #例子:
     shutil.make_archive("backup","tar",root_dir="/home/www/") #将/home/www目录下的文件进行备份,		生成backup.tar的文件,其中tar为压缩包的后缀,www为压缩包文件名
  8. zipfile的压缩与解压
    (1)格式:

    #压缩
     import zipfile
     f = zipfile.ZipFile(target,'w',zipfile.ZIP_DEFLATED)
     f.write(filename,file_url)
     f.close()
     
     ·target:是压缩后要保存的路径,可以是: 'C:\\temp\\'
     ·ZIP_DEFLATED:表示压缩,还有一个参数:ZIP_STORE:表示只打包,不压缩。这个Linux中的gz跟tar格式有点类似.
     ·write方法如果只有一个参数filename的话,表示把你filename所带的路径全部压缩到zip文件中。如果带两个参数,表示把filename路径中的那个file压缩一下并且存放到file_url中,中间没有增加任何的文件夹。
     如果要压缩很多的文件,循环的write就ok了。
     ·最后close掉。
    
     #解压
     f = zipfile.ZipFile("zipfilePath",'r')
     f.extract(filename,"temp/")
     f.extractall("temp/")
     

    (2)例子:

    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.extract(filename,"temp/")
     z.extractall("temp/")
     z.close()

四、终端命令

  1. os.system(‘commond’) 执行终端命令不返回结果

  2. os.popen(‘commond’) 执行终端命令并返回系统命令的结果
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zJKOGKdC-1573094036990)(https://i.imgur.com/UGqnPuB.png)]
    注意:以上os不推荐使用。

  3. subprocess.call(args,shell = True) 等待任务执行完成,返回值为0(成功)或1(失败),把执行结果输出到屏幕中。如果shell=True,args一般为list类型或者字符串类型,如果为False,则必须为list类型。

  4. subprocess.check_call(args,shell = True) 等待任务执行完成,返回值为0(成功),把执行结果输出到屏幕中,如果执行失败,则报错。如果shell=True,args一般为list类型或者字符串类型,如果为False,则必须为list类型。

  5. subprocess.check_output(args,shell = True) 等待任务执行完成,返回值为执行结果,如果执行失败,则报错。如果shell=True,args一般为list类型或者字符串类型,如果为False,则必须为list类型。

  6. subprocess.getoutput(‘commond’) 得到str类型的命令结果
    subprocess.getstatusoutput(‘commond’) 得到元组类型的结果(int:status,str:result)----0成功,1失败
    subprocess.Popen(…)参数太多了,有时间再看
    https://blog.youkuaiyun.com/RonnyJiang/article/details/53333538
    https://www.cnblogs.com/yyds/p/7288916.html
    subprocess.call(‘脚本/shell’, shell=True)
    Popen和call的区别是前者无阻塞,会和主程序并行运行,后者必须等待命令执行完毕,如果想要前者编程阻塞可以这样:
    s = subprocess.Popen(‘脚本/shell’, shell=True)
    s.wait()
    retcode = subprocess.call([“ls”, “-l”])

  7. pexpect模块 自动化运维交互工具
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QHl2WDOZ-1573094036991)(https://i.imgur.com/RHTnA8t.png)]
    常用例子:
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OHrlG7cW-1573094036991)(https://i.imgur.com/kisCsGx.png)]
    https://www.jianshu.com/p/cfd163200d12
    https://blog.youkuaiyun.com/yancychas/article/details/83655483

五、时间

  1. time.time() 当前时间的时间戳
  2. time.sleep(5) 休眠5秒,单位是秒
  3. datetime.datetime.now() 当前时间
  4. datetime.datetime(2018,11,2,17,46,24,6) 制造此时间的datetime
  5. datetime.datetime.now().year
    .date()
    .time()
    获取时间的某一项
  6. datetime.datetiome.fromstamp(timestmp) 获取当前时间戳的时间
  7. 时间可以比较,时间更大,数值更大
  8. datetime.timedelta(days=2,hours=2,minutes=3,seconds=4) 表示一段时间,可以.days.seconds.totalseconds获取相应的时间
  9. datetime.datetime.now().strftime(’%Y/%m/%d %H:%M:%S’) 将时间对象转换为字符串对象
  10. datetime.datetime.strptime(‘date str’,‘dateformat’) 将时间字符串转换为时间对象

六、其他

  1. __init__(self,shuxing1,shuxing2)方法为类的初始化
  2. 如果实例属性的开头为__,例如self.__name,则代表该属性为私有化,类外部不能访问。
  3. '_'开头的实例变量不是私有化,但是一般认为其私有化
  4. 类也有类变量,直接在类中定义,可通过实例变量覆盖类变量,即实例变量>类变量。例如:
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vbmTTd6y-1573094036992)(https://i.imgur.com/K25gepe.png)]
  5. 为了达到限制的目的,Python允许在定义class的时候,定义一个特殊的__slots__变量,来限制该class实例能添加的属性
  6. 可通过以下方法来调用新线程
threadObj=threading.Thread(target=functionName)
threadObj.start()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值