文件操作
- 读取大文件
with open('test.txt', 'r') as file:
while True:
line = file.readline()
if line:
print(line)
else:
break
- 多线程线程池
在实际开发中进程还是慎用的,但使用多线程要注意线程变量的问题,线程变量是共享的,因此操作一些文件要保证文件名是唯一的
from concurrent.futures import ThreadPoolExecutor
with ThreadPoolExecutor(6) as executor:
for each in get_card():
executor.submit(task, each)
- 批量移动
这样操作效率会高一些
import os, shutil
# 绝对路径
src_dir = os.path.abspath(r"C:\Users\Yaotc\Desktop\hi\train_2018")
dst_dir = os.path.abspath(r"C:\Users\Yaotc\Desktop\hi\data")
if not os.path.exists(dst_dir):
os.makedirs(dst_dir)
if os.path.exists(src_dir):
# root 所指的是当前正在遍历的这个文件夹的本身的地址
# dirs 是一个 list,内容是该文件夹中所有的目录的名字(不包括子目录)
# files 同样是 list, 内容是该文件夹中所有的文件(不包括子目录)
for root,dirs,files in os.walk(src_dir):
for file in files:
src_file = os.path.join(root, file)
shutil.copy(src_file, dst_dir)
print(src_file)
print('Done!')
序列化
- json.dumps会变成unicode
json.dump(dic, ensure_ascii=False)
TypeError: a bytes-like object is required, not 'str'
存储数据的时候key若为单引号会报此错误
{"title": title, "avgScore": avgScore, "allCommentNum": allCommentNum, "address": address,"avgPrice": avgPrice}
计数器
文件移动
shutil
定时执行
想要定时执行脚本,而有不想安装太多依赖,可以使用shell的定时
# 查看定时任务
crontab -l
# 编辑定时任务
crontab -e
# 删除定时任务
crontab -r
# * * * * *
minute hour day month week
# * 表示任意 - 范围(2-6 == 2,3,4,5,6)
# , 取值(1,3,5,7) / (频率)
5 8-23/1 * * * /home/myshell.sh 8到23点每隔一个小时的第五分钟
shell传递变量
#!/bin/bash
a=1
b=2
sudo python test.py $a $b