python 知识点汇总

1. Python 列表前加 *号

列表前面加星号作用是将列表中所有元素解开成独立的参数

a=[1,2,3]   
print(*a) 

输出:

1 2 3

2.从源码安装包

  • 方法1: pip install
pip install git+https://github.com/Robpol86/terminaltables.git
  • 方法2: clone and install
git clone https://github.com/Robpol86/terminaltables.git
cd terminaltables
python setup.py install

3.read()、readline()、readlines()

读取文件的三个方法:read()、readline()、readlines()。均可接受一个变量用以限制每次读取的数据量,但通常不使用。

  • read方法
      特点是:读取整个文件,将文件内容放到一个字符串变量中。
      劣势是:如果文件非常大,尤其是大于内存时,无法使用read()方法。

示例:

兼职模特联系方式.txt文本的内容如下:

吴迪 177 70 13888888
王思 170 50 13988888
白雪 167 48 13324434
黄蓉 166 46 13828382

read()直接读取字节到字符串中,包括了换行符

>>> file = open('兼职模特联系方式.txt', 'r')
>>> a = file.read()
>>> a
'吴迪 177 70 13888888\n王思 170 50 13988888\n白雪 167 48 13324434\n黄蓉 166 46 13828382'

readline方法
特点:readline()方法每次读取一行;返回的是一个字符串对象,保持当前行的内存
缺点比readlines慢得多

readline() 读取整行,包括行结束符,并作为字符串返回

>>> file = open('兼职模特联系方式.txt', 'r')
>>> a = file.readline()
>>> a

输出

'吴迪 177 70 13888888\n'

- readlines方法

readlines()读取所有行然后把它们作为一个字符串列表返回。

>>> file = open('兼职模特联系方式.txt', 'r')
>>> a = file.readlines()
>>> a
['吴迪 177 70 13888888\n', '王思 170 50 13988888\n', '白雪 167 48 13324434\n', '黄蓉 166 46 13828382']

4. python[:]以及[::]用法

[m:n] #切片操作,取a[m]~a[n-1]之间的内容,m\n可以为负,m>n时返回空

[m::n] #从a[m]开始,每跳|n|个取一个,当n为负时逆序取数。 当n为正的时候,m为空则默认m=0,n为负时,m为空则默认为-1

In [1]: import numpy as np                                                                                                                                                                                                                                                                                                    

In [2]: a = np.random.rand(10)                                                                                                                                                                                                                                                                                                

In [3]: a                                                                                                                                                                                                                                                                                                                     
Out[3]: 
array([0.56206001, 0.93252115, 0.24078108, 0.36059548, 0.1946579 ,
       0.35166964, 0.77443621, 0.97699886, 0.30177723, 0.10688389])

In [4]: a[3:2]       # m>n返回空                                                                                                                                                                                                                                                                                                         
Out[4]: array([], dtype=float64)

In [5]: a[::-1]      # 从a[-1]开始逆序取数,间隔为1,即逆序所有                                                                                                                                                                                                                                                                                                         
Out[5]: 
array([0.10688389, 0.30177723, 0.97699886, 0.77443621, 0.35166964,
       0.1946579 , 0.36059548, 0.24078108, 0.93252115, 0.56206001])

In [6]: a[3::-1]     # 从a[3]开始逆序取数,间隔为1                                                                                                                                                                                                                                                                                                         
Out[6]: array([0.36059548, 0.24078108, 0.93252115, 0.56206001])

In [7]: a[8::-2]     # 从a[8]开始逆序取数,间隔为2                                                                                                                                                                                                                                                                                                                  
Out[7]: array([0.30177723, 0.77443621, 0.1946579 , 0.24078108, 0.56206001])

In [8]: a[8::-3]    # 从a[8]开始逆序取数,间隔为3                                                                                                                                                                                                                                                                                                                   
Out[8]: array([0.30177723, 0.35166964, 0.24078108])

In [9]: a[3::1]     # 从a[3]开始正序取数,间隔为1                                                                                                                                                                                                                                                                                                          
Out[9]: 
array([0.36059548, 0.1946579 , 0.35166964, 0.77443621, 0.97699886,
       0.30177723, 0.10688389])

In [10]: a[3::2]   # 从a[3]开始正序取数,间隔为2                                                                                                                                                                                                                                                                                                            
Out[10]: array([0.36059548, 0.35166964, 0.97699886, 0.10688389])

In [11]: a[3::3]   # 从a[3]开始正序取数,间隔为3                                                                                                                                                                                                                                                                                                            
Out[11]: array([0.36059548, 0.77443621, 0.10688389])

In [12]: a[::2]                                                                                                                                                                                                                                                                                                               
Out[12]: array([0.56206001, 0.24078108, 0.1946579 , 0.77443621, 0.30177723])

In [13]: a[::-2]                                                                                                                                                                                                                                                                                                              
Out[13]: array([0.10688389, 0.97699886, 0.35166964, 0.36059548, 0.93252115])

5. 下划线_的变量和函数命名的用法

  • 前后均带有双下划线__的命名
    一般用于特殊方法的命名,用来实现对象的一些行为或者功能,比如__new__()方法用来创建实例,init()方法用来初始化对象,x + y操作被映射为方法x.add(y),序列或者字典的索引操作x[k]映射为x.getitem(k),len()、str()分别被内置函数len()、str()调用等等。

仅开头带双下划线__的命名

用于对象的数据封装,以此命名的属性或者方法为类的私有属性或者私有方法

class Foo(object):
  def __init__(self):
    self.__name = 'private name'
  
  def getname(self):
    return self.__name
  
  def __spam(self):
    print 'private method'
  
  def bar(self):
    self.__spam()

如果在外部直接访问私有属性或者方法:

>>> f = Foo()
>>> f.__name
  
Traceback (most recent call last):
 File "", line 1, in <module>
  f.__name
AttributeError: 'Foo' object has no attribute '__name'
>>> f.__spam()
  
Traceback (most recent call last):
 File "", line 1, in <module>
  f.__spam()
AttributeError: 'Foo' object has no attribute '__spam'

是不可行的,这就起到了隐藏数据的作用,但是这种实现机制并不是很严格,机制是通过自动"变形"实现的,类中所有以双下划线开头的名称__name都会自动变为"_类名__name"的新名称

>>> f._Foo__name
'private name'
>>> f._Foo__spam()
private method

这样就可以访问了。

这种机制可以阻止继承类重新定义或者更改方法的实现,比如,定义一个Foo的派生类:

class Goo(Foo):
  def __spam(self):
    print 'private method of Goo'

重写了__spam方法,运行:

>>> g = Goo()
>>> g.bar()
private method

调用bar()方法的时候依然执行的是Foo类的__spam()方法,因为在bar()方法的实现中,self.__spam()已自动变形为self._Foo__spam(),Goo继承的bar()方法也是如此。

以单下划线_开头的命名

一般用于模块中的"私有"定义的命名。

from module import * 语句用于加载模块中的所有名称,要控制导入的名称,一种方法是定义列表__all__,只有在__all__中的名称才能通过*导入,

另一种方法就是以单下划线开头命名定义了,这种定义不会被*导入。

当然,在类中也可以用单下划线开头来命名属性或者方法,这只是表示类的定义者希望这些属性或者方法是"私有的",但实际上并不会起任何作用

6. vscode 调试代码时参数配置(args)

连接:https://blog.csdn.net/zk0272/article/details/83105574

7.os常见用法


os模块:os模块在python中包含普遍的操作系统功能,下面列出了一些在os模块中比较有用的部分

  • os.sep可以取代操作系统特定的路径分隔符。windows下为 “\”
  • os.name字符串指示你正在使用的平台。比如对于Windows,它是’nt’,而对于Linux/Unix用户,它是’posix’。
  • os.getcwd()函数得到当前工作目录,即当前Python脚本工作的目录路径。
  • os.getenv()获取一个环境变量,如果没有返回none
  • os.putenv(key, value)设置一个环境变量值
  • os.listdir(path)返回指定目录下的所有文件和目录名。
  • os.remove(path)函数用来删除一个文件。
  • os.system(command)函数用来运行shell命令。
  • os.linesep字符串给出当前平台使用的行终止符。例如,Windows使用’\r\n’,Linux使用’\n’而Mac使用’\r’。
  • os.curdir:返回当前目录(‘.’)
  • os.chdir(dirname):改变工作目录到dirname

os.path常用方法:

  • 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分割成目录和文件名二元组返回
  • 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[, …]]) 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
  • os.path.getatime(path) 返回path所指向的文件或者目录的最后存取时间
  • os.path.getmtime(path) 返回path所指向的文件或者目录的最后修改时间
  • os.path.getsize(path) 返回path的大小
  • os.path.normpath(os.path.join(os.path.abspath(file),‘…’,‘…’,‘…’))表示返回当前文件的上上上层目录
    参考链接:https://www.cnblogs.com/lixiaoting/p/11136866.html

8.python文件操作

python对文件夹的操作汇总,方便查阅使用

  • 遍历指定目录,显示目录下的所有文件名
    python 知识点汇总_第1张图片
  • 遍历文件夹及其子文件夹的所有文件,获取文件的列表
    python 知识点汇总_第2张图片
  • Python 遍历子文件和所有子文件夹 输出字符串
    参考: http://blog.csdn.net/Qian_F/article/details/9896283
    python 知识点汇总_第3张图片
  • 对文件批量更名
    python 知识点汇总_第4张图片

9.logging的用法

https://www.cnblogs.com/lixiaoting/archive/2004/01/13/11131289.html

10. python切片-截取-逆序截取

https://blog.csdn.net/HeyShHeyou/article/details/82665453

你可能感兴趣的:(python,python)