..

python - 零碎知识点

1. 文件路径问题参考1

import os
os.path.realpath("用户输入的路径") #获取绝对路径,组要是路径分隔符会由操作系统决定,如果windows下输入/会被转换成\,更多相关请help("os.path")查看。
gogs-repositories

 

2.获取脚本携带的参数参考1

#简单处理命令行参数使用sys模块就行,复杂的使用argparse等。

#sys
import sys
len(sys.argv) #获取命令和参数的总个数
sys.argv[0] #脚本名称
sys.argv[1] #第一个参数的值
sys.argv[2] #第二个参数的值

 

 

3.正则参考1,

import re
re.search(pattern, string, flags=0)
#pattern 匹配的正则表达式
#string 要匹配的字符串。
#flags 标志位

#更多信息参考help("re")
#补充查找用search,匹配用match,match是从头找,如果开头失败了,就匹配不成功。

 

 

4.修改文件名

import os
os.rename("old_name","new_name")

 

 

5.**kwargs 参考

#先说**的作用,**调用函数
#定义一个函数
def fun(a, b, c):
    print (a, b, c)

#正常调用函数fun
fun(1,2,3) # 输出1 2 3


# 通过**来调用fun
d={'a':4,'b':5,'c':6}
fun(**d) #输出4 5 6
d={'b':9,'c':10}
fun(8,**d) #输出8 9 10 

#也就是说**变量,会把变量unpacket,就是把一个字典解包,把每个kv作为参数传递给被调用的函数。
d={'a':4,'b':5,'c':6,'ee':7}
fun(**d) # 这样调用,因为多传入ee这个,就会导致调用时候出错TypeError: fun() got an unexpected keyword argument 'ee'

###################################################

#再说**kwargs,**定义函数
#定义一个函数
def fun(a,**kwargs):
    print (a, kwargs)

#正常调用
fun(1,b=2,c=3) #输出1 {'b': 2, 'c': 3}

#**方式调用
d={'a':1,'b':2,'c':3,'d':4}
fun(**d) #输出1 {'b': 2, 'c': 3, 'd': 4}

#也就是说定义函数时候使用**,**对应的变量是一个字典,字典里面可以放很多参数,但是需要注意的是,在函数中使用字典作为参数时候,
#使用的时候如果字典中不存在某个键会导致KeyError,程序就panic了。

 

 

6.module(模块) 参考

 一个py文件就是一个模块,写好的py文件可以被执行,python my.py,或者被导入到别的地方进行执行。如果直接执行__name__=='__main__'就会成立,对应代码会被执行。下面是一个module的例子。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

' a test module '

__author__ = 'lhnonline'

import sys

__version__ = '1.0.0'

def test():
    args = sys.argv
    if len(args)==1:
        print('Hello, world!')
    elif len(args)==2:
        print('Hello, %s!' % args[1])
    else:
        print('Too many arguments!')

if __name__=='__main__':
    print("我是被直接执行的,不是被导入进来的")
    test() 
else:
    print("我是被导入进来的,不是直接运行的")
View Code

注意自己写的module如果在别的目录无法导入,可以import sys,然后sys.path.append("module的目录")就好了。

 

 

7.package

 package用来管理模块,就是管理py文件。package是一个文件夹,文件夹下面有一个__init__.py的文件。执行导入import的时候,如果导入的是package,那么这个package的__init__.py会被执行。

这是一个package的__init__.py的例子:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

' this is my first package '

__author__ = "lhnonline"

__version__ = "1.0.0"

print("导入我干嘛,服务要收费")
View Code

 在上面截图中firstpkg是一个package,它拥有一个模块moduleOne,而且他还有一个子package,就是firstpkgson。当我们导入firstpkg,可以查看他的信息,如下面截图。

  截图中可以清晰的看到,这个包(package)拥有的子package和模块(moduleOne)。

 

 

8.import

import导入的可能是模块(module),也可能是包(package)。如果想了解更多可以 help("import") 进行查阅。这里进行一点总结。

from packageA import bar
# 如果bar是 __init__.py中的东西,变量函数之类的导入,执行完了。
# 如果bar是 packageA 的子包 subpackage,导入,执行完了。
# 如果bar是 packageA 的模块中的东西,变量函数之类的,导入,执行完了。

# 就是上面描述的解析顺序。
# 如果要导入子包,请先导入父包

 

 

 

9.

11

posted @ 2020-10-14 08:37  罗浩楠  阅读(136)  评论(0)    收藏  举报
..