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
一、路径
- os.sep:取代操作系统特定的路径分隔符
- os.name:指示你正在使用的工作平台。比如对于Windows,它是’nt’,而对于Linux/Unix用户,它是’posix’。
- os.getenv()和os.putenv:分别用来读取和设置环境变量
- os.remove(file):删除一个文件
- os.stat(file):获得文件属性
- os.chmod(file):修改文件权限和时间戳(具体:https://www.runoob.com/python/os-chmod.html)
- os.mkdir(name):创建目录
- os.makedirs():递归文件夹创建函数。
- os.rmdir(name):删除目录
- os.removedirs(r“c:\python”):删除多个目录
- os.system():运行shell命令
- os.exit():终止当前进程
- os.linesep:给出当前平台的行终止符。例如,Windows使用’\r\n’,Linux使用’\n’而Mac使用’\r’
- os.listdir(dirname):列出dirname下的目录和文件
- os.getcwd():获得当前工作目录 (绝对路径)
- os.curdir:返回当前目录(相对路径)
- os.chdir(dirname):改变工作目录到dirname
- os.symlink(src, dst):创建软连接。os.link():创建硬链接。
- os.path.isfile()和os.path.isdir()分别检验给出的路径是一个目录还是文件
- os.path.split():返回一个路径的目录名和文件名
- os.path.isdir(name):判断name是不是目录,不是目录就返回false
- os.path.isfile(name):判断name这个文件是否存在,不存在返回false
- os.path.exists(name):判断是否存在文件或目录name
- os.path.getsize(name):或得文件大小,如果name是目录返回0L
- os.path.abspath(name):获得绝对路径
- os.path.isabs():判断是否为绝对路径
- os.path.normpath(path):规范path字符串形式
- os.path.split(name):分割文件名与目录(事实上,如果你完全使用目录,它也会将最后一个目录作为文件名而分离,同时它不会判断文件或目录是否存在)
- os.path.splitext():分离文件名和扩展名
- os.path.join(path,name):连接目录与文件名或目录
- os.path.basename(path):返回文件名
- os.path.dirname(path):返回文件路径
二、读写
读取
- file=open(‘path’) 读取获取文件
- content=file.read() 将文件存放在content中
- file.readline() 读取一行
- file.readlines() 读取所有行存放在list中
- file.close() 关闭流
- 注意:一个file=open(‘path’)文件读取后,读取的内容删除。
写入
- file=open(‘path’,‘w’) 以写入模式获取文件
- file=open(‘path’,‘a’) 以append模式获取文件
- file.write(‘some content’) 写入内容
- file.close() 关闭流
三、组织文件
-
shutil.copy(src,dst) 注意dst如果是文件名,则重命名成该文件名,如果dst是文件夹,则保持原来的名字,src不能是文件夹(注意dst路径必须存在)
-
shutil.copyfile(src,dst) 拷贝文件,dst必须指定文件名,且路径必须存在,与mv命令相似。
-
shutil.copytree(src,dst) 复制文件树。如果src是文件夹则复制src内部的文件树,如果是文件则复制该文件。注意dst路径不能已经存在
-
shutil.move(src,dst) 移动改名文件。如果src是文件夹则复制src本身的文件树。如果src是文件,如果dst不存在就将文件名重新命名为dst,与mv命令相似。
-
shutil.rmtree(‘path’) 删除path处的文件树。如果是文件夹,则删除path本身的文件树
-
os.walk(‘path’) 返回path的当前文件夹名称、子文件夹名称list、子文件名称list
-
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为压缩包文件名
-
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()
四、终端命令
-
os.system(‘commond’) 执行终端命令不返回结果
-
os.popen(‘commond’) 执行终端命令并返回系统命令的结果
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zJKOGKdC-1573094036990)(https://i.imgur.com/UGqnPuB.png)]
注意:以上os不推荐使用。 -
subprocess.call(args,shell = True) 等待任务执行完成,返回值为0(成功)或1(失败),把执行结果输出到屏幕中。如果shell=True,args一般为list类型或者字符串类型,如果为False,则必须为list类型。
-
subprocess.check_call(args,shell = True) 等待任务执行完成,返回值为0(成功),把执行结果输出到屏幕中,如果执行失败,则报错。如果shell=True,args一般为list类型或者字符串类型,如果为False,则必须为list类型。
-
subprocess.check_output(args,shell = True) 等待任务执行完成,返回值为执行结果,如果执行失败,则报错。如果shell=True,args一般为list类型或者字符串类型,如果为False,则必须为list类型。
-
subprocess.getoutput(‘commond’) 得到str类型的命令结果
subprocess.getstatusoutput(‘commond’) 得到元组类型的结果(int:status,str:result)----0成功,1失败
subprocess.Popen(…)参数太多了,有时间再看
https://blog.csdn.net/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”]) -
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.csdn.net/yancychas/article/details/83655483
五、时间
- time.time() 当前时间的时间戳
- time.sleep(5) 休眠5秒,单位是秒
- datetime.datetime.now() 当前时间
- datetime.datetime(2018,11,2,17,46,24,6) 制造此时间的datetime
- datetime.datetime.now().year
.date()
.time()
获取时间的某一项 - datetime.datetiome.fromstamp(timestmp) 获取当前时间戳的时间
- 时间可以比较,时间更大,数值更大
- datetime.timedelta(days=2,hours=2,minutes=3,seconds=4) 表示一段时间,可以.days.seconds.totalseconds获取相应的时间
- datetime.datetime.now().strftime(’%Y/%m/%d %H:%M:%S’) 将时间对象转换为字符串对象
- datetime.datetime.strptime(‘date str’,‘dateformat’) 将时间字符串转换为时间对象
六、其他
- __init__(self,shuxing1,shuxing2)方法为类的初始化
- 如果实例属性的开头为__,例如self.__name,则代表该属性为私有化,类外部不能访问。
- '_'开头的实例变量不是私有化,但是一般认为其私有化
- 类也有类变量,直接在类中定义,可通过实例变量覆盖类变量,即实例变量>类变量。例如:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vbmTTd6y-1573094036992)(https://i.imgur.com/K25gepe.png)] - 为了达到限制的目的,Python允许在定义class的时候,定义一个特殊的__slots__变量,来限制该class实例能添加的属性
- 可通过以下方法来调用新线程
threadObj=threading.Thread(target=functionName)
threadObj.start()