Python移动目录文件

1
2
3
4
5
6
7
8
9
10
import shutil
import os


px = "G:\Guider_Code_Save\data\Autochartist\system_update\data"
zt = "G:\Guider_Code_Save\data\Autochartist\demo\\"

file = os.listdir(zt)
for files in file:
shutil.move(zt+files,px)

指定时间删除

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import os
import time
import shutil
import datetime
path = r'D:\Python_Crawel\Python_Backis\imooc_python_core\test1'
while True:
datime = str(datetime.datetime.now())[:-7]
test = '2020-11-26 13:34:26'
timeArray = time.strptime(test, "%Y-%m-%d %H:%M:%S")
timeArray1 = time.strptime(datime, "%Y-%m-%d %H:%M:%S")
timestamp = int(time.mktime(timeArray))
timestamp1 = int(time.mktime(timeArray1))
if timestamp1 == timestamp:
if os.path.exists(path):
shutil.rmtree(path)
print("成功")
break
else:
print("error")
break

tuple元组

tuple单元素写法要加逗号(,),即:tuple_1 = (1,),而不能这样写:1tuple_1(1)`,这样的写法Python会自动认为是一个整数而不是一个元组。

双重循环用法

1
2
3
4
5
import collections
Card = collections.namedtuple('Card',['rank','suit'])
suits = '1 1 1 1'.split()
ranks = [str(n) for n in range(2,11)] + list("JKQA")
_cards = [Card(rank,suit) for suit in suits for rank in ranks]
1
2
3
4
_cards = [Card(rank,suit) for suit in suits for rank in ranks]
# 上面的这种写法等于下面这种
for ist in i:
for rank in ranks:

循环遍历

1
for card in reversed(deck): # 反向迭代

阻塞:

指程序未得到所需计算资源时被挂起的状态。
常见的阻塞形式有:网络I/O阻塞、磁盘I/O阻塞、用户输入阻塞等

非阻塞:

程序在等待某操作过程中,自身不被阻塞。
可以继续处理其它的事情,则称该程序在操作上是非阻塞的
非阻塞并不是在任何程序级别、任何情况下都可以存在的
仅当程序封装的级别可以囊括独立的子程序单元时,才可能存在非阻塞状态

同步:

不同程序单元为了完成某个任务
在执行过程中需靠某种通信方式以协调一致,称这些程序单元是同步执行的
同步意味着有序

异步:

为完成某个任务
不同程序单元之间过程中无需通信协调,也能完成任务的方式
不相关的程序单元之间可以是异步的
异步意味着无序

多进程:

多进程就是利用CPU的多核优势
在同一时间并行地执行多个任务,可以大大提高执行效率

协程(Coroutine):

又称微线程、纤程,协程是一种用户态的轻量级线程。
拥有自己的寄存器上下文和栈,本质上是个单线程
相对于多进程,无需线程上下文切换的开销,无需原子操作锁定及同步的开销
编程模型非常简单

从Python 3.4开始,加入了携程的概念
但这个版本的携程还是以生成器对象为基础的
在Python3.5则增加了async/await,使得携程的实现更加方便

携程的用法:

event_loop
事件循环,相当于一个无限循环
可以把一些函数注册到这个事件循环上
当满足条件发生的时候,就会调用对应的处理方法

coroutine(携程)
在Python中常指代为协程对象类型
可以将协程对象注册到时间循环中,它会被事件循环调用
可以使用async关键字来定义一个方法
这个方法在调用时不会立即被执行,而是返回一个协程对象

task
任务,它是对协程对象的进一步封装,包含了任务的各个状态
future
代表将来执行或没有执行的任务的结果,实际上和task没有本质区别

Xpath:
//p[position()<4]# 取前三条数据
//p[last()]# 最后一个元素

# 模糊匹配
//div[contains(@class,'fash')]##div的class属性带有fash的

**# 通配符 ***
//p/*# 取div下面所有的元素
//div[@*]# 取div下所有带属性的元素

# 运算符
//div[@class = 'float-fixed'] and @id='t-float'

//div[@class = 'float-fixed'] | @id='t-float'

//tr[position()>2 and position()<8] # 位置大于2小于8


**Python去除**`\ufeff`、`\xa0`、`\u3000` 爬虫的时候遇到了这些特殊字符,记录一下处理方法 `\ufeff` 字节顺序标记 去掉\ufeff,只需改一下编码就行,把UTF-8编码改成UTF-8-sig `with open(file_path, mode='r', encoding='UTF-8-sig') as f:` `s = f.read()` `\xa0`是不间断空白符 去除\xa0 `.replace(u'\xa0', u' ')` `\u3000`是全角的空白符 去除\u3000 `.replace(u'\\u3000',u'')` 去除空格和\xa0、\u3000 `title.strip().replace(u'\u3000', u' ').replace(u'\xa0', u' ')`

参考帖子地址:https://www.cnblogs.com/xufengnian/p/10788195.html
https://www.cnblogs.com/zqifa/p/python-9.html