#有缩进的代码表示局部作用域的代码
#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. 【路飞学城Day170】算法小结

    Evernote Export 算法的思想是能省则省,内存能少则少,时间运行能少尽量少 堆排序的时间复杂度O(nlogn) 堆排序的内置模块heapq 常用函数 heapify(x) heappush ...

  2. jQuery节点操作方法大全

    1.append() 向每个匹配的元素内部追加内容 HTML代码: <p>我想说:</p> jQuery代码: $('p').append('<b>你好</b ...

  3. C语言提高 (6) 第六天 文件(续) 链表的操作

    1昨日回顾 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include &l ...

  4. js操作table中tr的顺序,实现上移下移一行的效果

    总体思路是在table外部加个div,修改div的innerHtml实现改变tr顺序的效果 具体思路是 获取当前要移动tr行的rowIndex,在table中删除掉,然后循环table的rows,到了 ...

  5. [SHOI2012]信用卡凸包(凸包+直觉)

    这个题还是比较有趣. 小心发现,大胆猜想,不用证明! 我们发现所谓的信用卡凸包上弧的长度总和就是圆的周长! 然后再加上每个长宽都减去圆的直径之后的长方形的凸包周长即可! #include<ios ...

  6. XML文件基础

      https://c3d.club/xml/basic/2018/12/27/xml-file-base.html 1.文件头 XML文件头有XML声明与DTD文件类型声明组成.其中DTD文件类型声 ...

  7. spring data JPA 中的多属性排序

    在此介绍我所用的一种方式: 第一步,引包 import org.springframework.data.domain.Sort;import org.springframework.data.dom ...

  8. Routh-Hurwitz Criterion 劳斯稳定判据

    Routh-Hurwitz Criterion 为什么仅仅要有一个极点在右半平面,那么系统就不会稳定? 比如H(s) =( 1/(s+1) ) *  ( 1/(s+3) ) * ( 1/(s-2) ) ...

  9. Swift开发教程--怎样自己定义TabBarItem的图片显示

    在做项目的时候,假设使用系统的UITabBarController的时候,底部的tab自己定义图片显示是蓝色和灰色的.这不是我们所想要的效果. 假设想显示自己定义的按下和弹起的图片效果.这个时候就须要 ...

  10. hdu2688 Rotate(树状数组)

    题目链接:pid=2688">点击打开链接 题意描写叙述:对一个长度为2<=n<=3000000的数组,求数组中有序对(i<j而且F[i]<F[j])的数量?其 ...