Python编码/文件读取/多线程
个人笔记~~记录才有成长 编码/文件读取/多线程
编码
常用的一般是gbk、utf-8,而在python中字符串一般是用Unicode来操作,这样才能按照单个字来处理,所以需要对不同的编码格式进行转化。
这里需要的函数decode和encode,形式都很简单,只要牢记对应的格式对应的编码就好
如果是utf-8,想转换成unicodecontent.decode('utf-8')如果是Utf-8,想转换成gbkcontent.decode('utf-8').encode('gbk')
注意:对于Python可以在.py中指定编码格式,如下选择的是utf-8格式
# -*- coding: utf-8 -*-
文件读取
传统的读法,全部读出,按行处理:
fp=open("./output.txt", "r");alllines=fp.readlines();fp.close();for eachline in alllines: print eachline;
使用文件迭代器 , 每次只读取和显示一行:
fp=open("./output.txt", "r");for eachline in fp: print eachline;
读取和保存CSV文件,使用CSV模块
import csvdef loadFile(file_name): f = open(file_name) r = csv.reader(f) for item in r: print item type = sys.getfilesystemencoding() for line in r:def saveFile(result): writer = csv.writer(open('result.csv','w'), dialect='excel') for item in result: writer.writerow(item)
多线程
由于程序数据有点大,尝试一下Python的多线程,其实和C++/JAVA都是类似的
调用thread模块中的start_new_thread()函数来产生新线
import timeimport threaddef timer(n, ID): cnt = 0 while cnt
python中的线程是通过thread模块来调用的,调用thread.start_new_thread()函数,该函数由两部分参数,第一个参数为线程函数,第二个参数为提供给线程函数的tuple型参数。
使用threading模块的 Thread类
这里要接触到继承的概念了,这种处理方式相对来说要清晰的多。
通过调用threading模块继承threading.Thread类来包装一个线程对象。
- 在自己的线程类的__init__里调用threading.Thread.__init__(self, name = threadname)
- Threadname为线程的名字
- run(),通常需要重写,编写代码实现做需要的功能。
- getName(),获得线程对象名称
- setName(),设置线程对象名称
- start(),启动线程
- jion([timeout]),等待另一线程结束后再运行。
- setDaemon(bool),设置子线程是否随主线程一起结束,必须在start()之前调用。默认为False。
- isDaemon(),判断线程是否随主线程一起结束。
- isAlive(),检查线程是否在运行中。
import timeimport threadimport threadingdef timer1(n, ID): cnt = 0 while cnt
本作品采用 进行许可。欢迎转载,请注明出处: 转载自: