Python笔记1.1(字符串日期转换、argparse、sys、overwrite、eval、json.dumpsloads、os.system(cmd)、zfill、endswith、深浅拷贝)

Python笔记2(函数参数、面向对象、装饰器、高级函数、捕获异常、dir)

1、字符串日期转换

# 字符串转换为日期
dt_date = datetime.datetime.strptime(ymd, "%Y%m%d")  
# 日期转换为字符串
date = dt_date.strftime("%Y-%m-%d") 
# 昨天 
(datetime.datetime.strptime(date, "%Y%m%d") - datetime.timedelta(1)).strftime("%Y%m%d")

2、argparse

命令行选项、参数和子命令解析器

3、sys模块

提供了一系列有关Python运行环境的变量和函数

  • sys.argv:实现从程序外部向程序传递参数,可以用sys.argv获取当前正在执行的命令行参数的参数列表(list)。
  • sys.path:返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值

4、overwrite

dataframe写入的一种模式,dataframe写入的模式一共有4种

def mode(saveMode: String): DataFrameWriter = {
    this.mode = saveMode.toLowerCase match {
      case "overwrite" => SaveMode.Overwrite              // 覆盖已经存在的文件
      case "append" => SaveMode.Append                    // 向存在的文件追加
      case "ignore" => SaveMode.Ignore                    // 如果文件已存在,则忽略保存操作
      case "error" | "default" => SaveMode.ErrorIfExists  // 如果文件存在,则报错
      case _ => throw new IllegalArgumentException(s"Unknown save mode: $saveMode. " +
        "Accepted modes are 'overwrite', 'append', 'ignore', 'error'.")
    }
    this
  }

5、eval

用来执行一个字符串表达式,并返回表达式的值

eval(expression[, globals[, locals]])

参数

  • expression – 表达式。
  • globals – 变量作用域,全局命名空间,如果被提供,则必须是一个字典对象。
  • locals – 变量作用域,局部命名空间,如果被提供,可以是任何映射对象。

还可以进行字符串与list、tuple、dict的转化

6、json.dumps()和json.loads()

json.dumps()和json.loads()是json格式处理函数(可以这么理解,json是字符串)

  1. json.dumps():Python 字典类型转换为 JSON 对象
  2. json.loads():将 JSON 对象转换为 Python 字典

7、os.system(cmd)

使用os.system(cmd)即可在python中使用linux命令

8、if __name__ == ‘__main__’:的作用

一个python文件通常有两种使用方法,第一是作为脚本直接执行,第二是 import 到其他的 python 脚本中被调用(模块重用)执行。因此 if __name__ == ‘main’: 的作用就是控制这两种情况执行代码的过程,在 if __name__ == ‘main’: 下的代码只有在第一种情况下(即文件作为脚本直接执行)才会被执行,而 import 到其他脚本中是不会被执行的。

9、zfill

返回指定长度的字符串,原字符串右对齐,前面填充0

10、如果不够两位,前位补0

# 如果不够两位,前位补0
conf = "qzk"
date = "20220606"
h = 6
h1 = 16
s1 = f"{conf}/{date}/{h:0>2d}"
s2 = f"{conf}/{date}/{h1:0>2d}"
print(s1)
print(s2)
# 输出
qzk/20220606/06
qzk/20220606/16

11、Python 直接赋值、浅拷贝和深度拷贝解析

  • 直接赋值:其实就是对象的引用(别名)。
  • 浅拷贝(copy):拷贝父对象,不会拷贝对象的内部的子对象。
  • 深拷贝(deepcopy): copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象。

字典浅/深拷贝实例

>>> a = {1: [1,2,3]}
>>> b = a.copy()
>>> a, b
({1: [1, 2, 3]}, {1: [1, 2, 3]})
>>> a[1].append(4)
>>> a, b
({1: [1, 2, 3, 4]}, {1: [1, 2, 3, 4]})

>>> import copy
>>> c = copy.deepcopy(a)
>>> a, c
({1: [1, 2, 3, 4]}, {1: [1, 2, 3, 4]})
>>> a[1].append(5)
>>> a, c
({1: [1, 2, 3, 4, 5]}, {1: [1, 2, 3, 4]})

解析

1、b = a: 赋值引用,a 和 b 都指向同一个对象。
2、b = a.copy(): 浅拷贝, a 和 b 是一个独立的对象,但他们的子对象还是指向统一对象(是引用)。
3、b = copy.deepcopy(a): 深度拷贝, a 和 b 完全拷贝了父对象及其子对象,两者是完全独立的。

12、endswith()

作用:判断字符串是否以指定字符或子字符串结尾,常用于判断文件类型
相关函数:判断字符串开头 startswith()

函数说明语法:

string.endswith(str, beg=[0,end=len(string)])
string[beg:end].endswith(str)

参数说明

  • string: 被检测的字符串
  • str: 指定的字符或者子字符串(可以使用元组,会逐一匹配)
  • beg: 设置字符串检测的起始位置(可选,从左数起)
  • end: 设置字符串检测的结束位置(可选,从左数起)

如果存在参数 beg 和 end,则在指定范围内检查,否则在整个字符串中检查
返回值:
如果检测到字符串,则返回True,否则返回False。

解析:如果字符串string是以str结束,则返回True,否则返回False

注:会认为空字符为真

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值