#有缩进的代码表示局部作用域的代码
#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. POJ 3281 Dining[网络流]

    Cows are such finicky eaters. Each cow has a preference for certain foods and drinks, and she will c ...

  2. N1-1 - 树 - Minimum Depth of Binary Tree

    题目描述: Given a binary tree, find its minimum depth.The minimum depth is the number of nodes along the ...

  3. maven引入spring相关依赖

    <!--spring相关包--> <dependency> <groupId>org.springframework</groupId> <art ...

  4. 从零開始写游戏引擎(一) - project创建以及文件夹设置还有版本号控制

    一句话提要 好的開始等于成功了一半. 创建文件夹结构 project文件夹下最好分为以下几个文件夹 Docs - 开发文档,设计文档 Assets - 角色,动作,模型和音效等 Source - 代码 ...

  5. HDU 4196

    很容易由算术基本定理知道,完全平方数就是所有质因子指数为偶数的数.而求得N以下的质因子,可由前两篇的公式知,由N!与p的关系求得.对于指数为p的,用N!除去就可以,因为p必定属于N以内,且无重复. 至 ...

  6. leetCode(32):Power of Two

    Given an integer, write a function to determine if it is a power of two. 2的幂的二进制表示中,必定仅仅有一个"1&q ...

  7. HDU TIANKENG’s rice shop(模拟)

    HDU 4884 TIANKENG's rice shop 题目链接 题意:模拟题.转一篇题意 思路:就模拟就可以.注意每次炒完之后就能够接单 代码: #include <cstdio> ...

  8. hdu 1165 Eddy&#39;s research II(数学题,递推)

    // Eddy 继续 Problem Description As is known, Ackermann function plays an important role in the sphere ...

  9. 防止 Chrome 屏蔽 非官方 扩展程序 教程(二)

    说明 前面介绍过一篇通过开发人员模式载入扩展程序的方法,尽管能够正常使用,可是每次又一次打开 Chrome 都会弹出询问窗体,比較麻烦.这里介绍第二种防止屏蔽的方法.与前一种方法相比,尽管应用的步骤多 ...

  10. 为data盘加入磁盘(asm external)

    1.创建盘,并两个节点皆能够訪问. 2.检查集群状态 [grid@rac1 ~]$ crsctl status res -t ------------------------------------- ...