#有缩进的代码表示局部作用域的代码
#if_name_ =='_main_'
# while True
#先引入一个os模块
import os,sys,time,json
# print(os.path.dirname())
#BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(_file_)))
# sys.path.append(BASE_DIR) 不写死找到相对路径
#################################################################################################################
# print(os.getcwd())
# 获取当前工作目录,即当前python脚本工作的目录路径-->F:\Python_Leaning\每日学习打卡
# os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径
# os.chdir("dirname") 改变当前脚本工作目录;相当于shell下cd
# os.curdir 返回当前目录: ('.')
# os.pardir 获取当前目录的父目录字符串名:('..')
# os.makedirs('dirname1/dirname2') 可生成多层递归目录
# os.removedirs('dirname1') 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,
# 依此类推,如果不是空文件则不给删除
# os.mkdir('dirname') 生成单级目录;相当于shell中mkdir dirname
# os.rmdir('dirname') 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
# os.listdir('dirname') 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
# os.remove() 删除一个文件
# os.rename("oldname","newname") 重命名文件/目录
# os.stat('path/filename') 获取文件/目录信息
# os.sep 输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/"
# os.linesep 输出当前平台使用的行终止符,win下为"\t\n",Linux下为"\n"
# os.pathsep 输出用于分割文件路径的字符串 win下为;,Linux下为:
# os.name 输出字符串指示当前使用平台。win->'nt'; Linux->'posix'
# os.system("bash command") 运行shell命令,直接显示
# os.environ 获取系统环境变量
# os.path.abspath(path) 返回path规范化的绝对路径
# os.path.split(path) 将path分割成目录和文件名二元组返回
# res = os.path.split('F:\Python_Leaning\venv\Scripts\python.exe F:/Python_Leaning/每日学习打卡/Day22.py')
# print(res)
# ('F:\\Python_Leaning\x0benv\\Scripts\\python.exe F:/Python_Leaning/每日学习打卡', 'Day22.py')
############################################################################################################
# os.path.dirname(path) 返回path的目录。其实就是os.path.split(path)的第一个元素
# os.path.basename(path) 返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素
# os.path.exists(path) 如果path存在,返回True;如果path不存在,返回False
# os.path.isabs(path) 如果path是绝对路径,返回True
# os.path.isfile(path) 如果path是一个存在的文件,返回True。否则返回False
# os.path.isdir(path) 如果path是一个存在的目录,则返回True。否则返回False
# os.path.join(path1[, path2[, ...]]) 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
#join是将路径进行拼接,最常用的方法
# os.path.getatime(path) 返回path所指向的文件或者目录的最后存取时间
# os.path.getmtime(path) 返回path所指向的文件或者目录的最后修改时间
##################################################################################################################
# SYS模块
# sys.argv 命令行参数List,第一个元素是程序本身路径
# sys.exit(n) 退出程序,正常退出时exit(0)
# sys.version 获取Python解释程序的版本信息
# sys.maxint 最大的Int值
# sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
# sys.platform 返回操作系统平台名称
######################################################################################################################
# 进度条
# for i in range(10):
# sys.stdout.write('#')
# time.sleep(1)
# sys.stdout.flush()
# print(sys.argv)
#######################################################################################################################
#json模块用于数据交换,json可以进行任何语言的数据交换
# dic = {'name':'alex'}
# data = json.dumps(dic)
# print(data)
# print(type(data)) #json字符串一定是双引号
# f = open("json_test","r")
# data = f.read()
# print(data)
# print(type(data))
# data1 = json.loads(data)
# print(data1["name"])
# f.close()
# {"name":"alex"}
# <class 'str'>
# alex
########################################################################################################################
# 什么是序列化?
# 我们把对象(变量)从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling,
# 在其他语言中也被称之为serialization,marshalling,flattening等等,都是一个意思。
# 序列化之后,就可以把序列化后的内容写入磁盘,或者通过网络传输到别的机器上。
# 反过来,把变量内容从序列化的对象重新读到内存里称之为反序列化,即unpickling。
# # ----------------------------序列化
# import pickle
# dic = {'name': 'alvin', 'age': 23, 'sex': 'male'}
# print(type(dic)) # <class 'dict'>
# j = pickle.dumps(dic)
# print(type(j)) # <class 'bytes'>
# f = open('序列化对象_pickle', 'wb') # 注意是w是写入str,wb是写入bytes,j是'bytes'
# f.write(j) # -------------------等价于pickle.dump(dic,f)
# f.close()
# # -------------------------反序列化
# import pickle
# f = open('序列化对象_pickle', 'rb')
# data = pickle.loads(f.read()) # 等价于data=pickle.load(f)
# print(data['age'])
# Pickle的问题和所有其他编程语言特有的序列化问题一样,就是它只能用于Python,
# 并且可能不同版本的Python彼此都不兼容,因此,只能用Pickle保存那些不重要的数据,不能成功地反序列化也没关系。
#######################################################################################################################
# import shelve
# f = shelve.open(r'shelve.txt')
# # f['stu1_info']={'name':'alex','age':'18'}
# # f['stu2_info']={'name':'alvin','age':'20'}
# # f['school_info']={'website':'oldboyedu.com','city':'beijing'}
# # f.close()
# print(f.get('stu_info')['age'])
# shelve模块比pickle模块简单,只有一个open函数,返回类似字典的对象,可读可写;key必须为字符串,
# 而值可以是python所支持的数据类型
#######################################################################################################################
#XMl是等同于现在的json的数据处理交换文件,但是由于时间使用长,所以xml需要了解,xml使用的是标签语言,所有的语法都是标签实现的
#xml需要对数据进行解析
import xml.etree.cElementTree as ET #简写
# tree = ET.parse("F:/Python_Leaning/测试专用文件夹/xmltest")
# root = tree.getroot() #找到根节点————>root
# print(root.tag) # tag就是标签的名字
#遍历文档内容
# for child in root:
# print(child.tag,child.attrib)
# for i in child:
# print(i.text)
#______________________________________________________________#
#只遍历year节点
# for node in root.iter('gdppc'):
# print(node.tag,node.text)
#_______修改_________________________________________________________#
# for node in root.iter('year'):
# new_year = int(node.text)+1
# node.text = str(new_year)
# node.set('updated','yes')
# tree.write('xmltest.xml')
#_____删除_______________________________________________________________#
# for country in root.findall('country'):
# rank = int(country.find('rank').text)
# if rank >50:
# root.remove(country)
# tree.write('xmltest.xml')
#__________________________________________________________________________#
#创建xml数据
# new_xml = ET.Element('namelist')
# name = ET.SubElement(new_xml,'name',attrib = {'enrolled':'yes'})
# age = ET.SubElement(name,'age',attrib = {'checked':'no'})
# et = ET.ElementTree(new_xml) #生成文档树
# et.write('test.xml',encoding='UTF-8',xml_declaration=True)
#——————————————————————————————————————#
#正则表达式:对字符串进行处理
# 就其本质而言,正则表达式(或 RE)是一种小型的、高度专业化的编程语言,
# (在Python中)它内嵌在Python中,并通过 re 模块实现。正则表达式模式被编译成一系列的字节码,
# 然后由用 C 编写的匹配引擎执行。
# 字符匹配(普通字符,元字符):
#
# 1 普通字符:大多数字符和字母都会和自身匹配
# >>> re.findall('alvin','yuanaleSxalexwupeiqi')
# ['alvin']
#
# 2 元字符:. ^ $ * + ? { } [ ] | ( ) \ --->>提供了模糊匹配的可能
# .通配符:什么都可以代替,数字、字母等,除了_不能替换
import re
# res = re.findall('^a..x','aappxasdasdiahsoldasidhxaosiduasx')
# print(res)
#^ 以什么开头,必须在字符串的开头匹配
#$ 以什么为结尾,必须在字符串的结尾匹配
#* 重复符号,零到无穷个,贪婪匹配,有多少都必须匹配上
# res = re.findall('^a*','aaaaaappxasdasdiahsoldasidhxaosiduasx')
# print(res)
#+ 重复符号,1到无穷个,至少出现一次,贪婪匹配,有多少都必须匹配上
# res = re.findall('alex*','aasdleasdasdxxxxxx')
# print(res)
#? 重复符号,匹配0到1个
# res = re.findall('alex?','asdasdaalfalexasdasgaalexasdataalex')
# print(res)
#{} 范围自己定 {0,}==* {1,}==+ {0,1}==?
#前面的*+?等都是贪婪匹配,后面加?号就是使其变成惰性匹配
#[]字符集 代表或的作用,在字符集中不能存在匹配符号,字符集里有功能的符号:-至 ^非 \
# res = re.findall('w[a-z]*','wwwbaidu')
# print(res)
# res = re.findall('\([^()]*\)','12+(34*6+2-5*(2-1))')
# print(res)
#\ 转译符
# 元字符之转义符\
# 反斜杠后边跟元字符去除特殊功能,比如\.
# 反斜杠后边跟普通字符实现特殊功能,比如\d
# \d 匹配任何十进制数;它相当于类 [0-9]。
# \D 匹配任何非数字字符;它相当于类 [^0-9]。
# \s 匹配任何空白字符;它相当于类 [ \t\n\r\f\v]。
# \S 匹配任何非空白字符;它相当于类 [^ \t\n\r\f\v]。
# \w 匹配任何字母数字字符;它相当于类 [a-zA-Z0-9_]。
# \W 匹配任何非字母数字字符;它相当于类 [^a-zA-Z0-9_]
# \b 匹配一个特殊字符边界,比如空格 ,&,#等
#()是做分组用的

Pyhton学习——Day22的更多相关文章

  1. day22 Pyhton学习 re模块和正则表达式

    正则表达式本身也和python没有什么关系,就是匹配字符串内容的一种规则. 官方定义:正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个" ...

  2. Pyhton学习——Day26

    #多态:多态指的是一类事物有多种形态# import abc# class Animal(metaclass = abc.ABCMeta):# 同一类事物:动物# @abc.abstractclass ...

  3. pyhton 学习

    官方学习文档 https://docs.python.org/3/tutorial/

  4. 20190320_head first pyhton学习笔记之构建发布

    1.把代码nester.py放入文件夹nester中,在文件夹中再新建一个setup.py文件,文件内容如下: from distutils.core import setup setup( name ...

  5. Pyhton学习——Day2

    Python开发IDE(工具)Pycharm.eclipse1.循环while 条件 #循环体 #条件为真则执行 #条件为假则执行break用于退出所有循环continue用于退出当前循环 2.Pyc ...

  6. Pyhton学习——Day28

    #上下文协议:文件操作时使用with执行# with open('a.txt','w',encoding='utf-8') as f1:# with语句,为了让一个对象兼容with语句,必须在这个对象 ...

  7. Pyhton学习——Day27

    # hasattr(obj,'name')-->obj.name# getattr(obj,'name',default = 'xxx')--->obj.name# setattr(obj ...

  8. Pyhton学习——Day25

    #面向对象的几个方法#1.静态方法@staticmethod,不能访问类属性,也不能访问实例属性,只是类的工具包#2.类方法:@classmethod,在函数属性前加上类方法,显示为(cls)代表类, ...

  9. Pyhton学习——Day24

    # #面向对象设计:# def dog(name,gender,type):# def jiao(dog):# print('One Dog[%s],wfwfwf'%dog['name'])# def ...

随机推荐

  1. css超出不换行可滑动

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name ...

  2. python海龟的使用

    ############################螺旋正方形############################### import turtle turtle.left(90)for i ...

  3. 51nod-独木舟问题

    n个人,已知每个人体重,独木舟承重固定,每只独木舟最多坐两个人,可以坐一个人或者两个人.显然要求总重量不超过独木舟承重,假设每个人体重也不超过独木舟承重,问最少需要几只独木舟?分析:  一个显然的策略 ...

  4. Nginx的反向代理的配置

    1.linux下的方向代理(前提域名和P已经映射好了的) 在linux中的输入命令:whereis nginx 查看当前nginx的安装目录 显示 nginx: /usr/local/nginx 命令 ...

  5. js里写html代码 啥时候要用“\"转义

    当去掉\的时候 字体变黑 需要加\

  6. Springboot分布式锁实践(redis)

    springboot2本地锁实践一文中提到用Guava Cache实现锁机制,但在集群中就行不通了,所以我们还一般要借助类似Redis.ZooKeeper 之类的中间件实现分布式锁,下面我们将利用自定 ...

  7. MSMQ如何设置事务特性

  8. Oracle-定时任务

    PLSQL->新建->命令行窗口 --存储过程 create or replace procedure prd_remove_error_data AS BEGIN UPDATE rpt_ ...

  9. Server Tomcat v8.0 Server at localhost was unable to start within 45 seconds. If the server requires

    Server Tomcat v8.0 Server at localhost was unable to start within 45 seconds. If the server requires ...

  10. 51nod-1462: 树据结构

    [传送门:51nod-1462] 简要题意: 给出一棵n个点的树,每个点有两个权值v,t 有Q个操作,有两种操作: 1.将x到根上的路径上的点的v值都加上d 2.将x到根上的路径上的点的t值都加上每个 ...