Python编码/文件读取/多线程
Python编码/文件读取/多线程
个人笔记~~记录才有成长 编码/文件读取/多线程
编码
常用的一般是gbk、utf-8,而在python中字符串一般是用Unicode来操作,这样才能按照单个字来处理,所以需要对不同的编码格式进行转化。
这里需要的函数decode和encode,形式都很简单,只要牢记对应的格式对应的编码就好
如果是utf-8,想转换成unicode
content.decode('utf-8')
如果是Utf-8,想转换成gbk
content.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 csv def 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 time
import thread def timer(n, ID):
cnt = 0
while cnt<n:
print 'Thread:(%d) Time:%s\n'%(ID,time.ctime())
cnt+=1
thread.exit_thread() def test(): #Use thread.start_new_thread() to create 2 new threads
thread.start_new_thread(timer, (5,1))
thread.start_new_thread(timer, (5,2)) if __name__=='__main__':
test()
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 time
import thread
import threading def timer1(n, ID):
cnt = 0
while cnt<n:
print 'Thread:(%d) Time:%s\n'%(ID,time.ctime())
cnt+=1
thread.exit_thread() class timer2(threading.Thread): #The timer class is derived from the class threading.Thread
def __init__(self, ID):
threading.Thread.__init__(self)
self.m_ID = ID
self.m_stop = False def run(self):
while not self.m_stop:
time.sleep(2)
print 'Thread Object(%d), Time:%s\n' %(self.m_ID, time.ctime()) def stop(self):
self.m_stop = True def test(): #Use thread.start_new_thread() to create 2 new threads
#thread.start_new_thread(timer1, (5,1))
#thread.start_new_thread(timer1, (5,2))
thread1 = timer2(1)
thread2 = timer2(2)
thread1.start()
thread2.start()
time.sleep(5)
thread1.stop()
thread2.stop() if __name__=='__main__':
test()
本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 未本地化版本许可协议进行许可。欢迎转载,请注明出处:
转载自:cococo点点 http://www.cnblogs.com/coder2012
Python编码/文件读取/多线程的更多相关文章
- python大文件读取
python大文件读取 https://stackoverflow.com/questions/8009882/how-to-read-a-large-file-line-by-line-in-pyt ...
- python .dcm文件读取,并转化为.jpg格式
.dcm文件是DICOM(Digital Imaging and Communications in Medicine)即医学数字成像和通信中记录医学图像和相关信息的文件,在用于医学图像处理的时候我们 ...
- Python txt文件读取写入字典的方法(json、eval)
link:https://blog.csdn.net/li532331251/article/details/78203438 一.使用json转换方法 1.字典写入txt import json d ...
- python tips:文件读取——换行符的问题
问题:在windows系统中,换行的符号是'\r\n'.python在读文件的时候为了系统兼容,会默认把'\r','n','\r\n'都视作换行.但是在windows文件中,可能在同一行中同时存在'\ ...
- python应用文件读取写登录注册
#!/usr/bin/python3# -*- coding: utf-8 -*-# Author: zhw#读取文件中的内容def open_file(filename ,file_type , * ...
- 用python实现文件读取和内容替换
infile = open("D:/test.txt", "r") #打开文件 outfile = open("D:/pp2.txt", & ...
- python 编码文件json.loads json.dumps
import yaml d = {'name': '张三', 'age': '1'} print d jd = json.dumps(d, ensure_ascii=False, encoding=' ...
- 中文系统下,UTF-8编码文本文件读取导致的错误
一.UTF-8编码文件读取导致的错误 有个txt文件,里面内容为: aaa bbb ccc 以UTF-8编码方式打开txt文件,顺序读取,将里面的值放到一个hashset中,并判断aaa是否在在has ...
- python编码总结
关于ASCII码和Unicode码的来源 计算机只能处理数字,如果要处理文本,需要先将文本转换成数字.早期计算机采用8bit作为一个字节(byte).所以一个字节最大为255(二进制11111111= ...
随机推荐
- sql Server中SET QUOTED_IDENTIFIER的使用
在存储过程中经常会有 Sql代码 SET QUOTED_IDENTIFIER on SET QUOTED_IDENTIFIER off 这样的语句,那么SET QUOTED_IDENTIFIER到 ...
- 生产力工具之vimwiki 和 calendar
vimwiki下载地址: http://www.vim.org/scripts/script.php?script_id=2226 calendar下载地址: https://github.com/i ...
- 【MVC】 非常简单的页面导出 WORD, EXCEL方法
[MVC] 页面导出 WORD, EXCEL 前端 js function output() { var para = new Object(); para.html = getHtml(" ...
- E. Santa Claus and Tangerines 二分答案 + 记忆化搜索
http://codeforces.com/contest/752/problem/E 首先有一个东西就是,如果我要检测5,那么14我们认为它能产生2个5. 14 = 7 + 7.但是按照平均分的话, ...
- IE、FF、Safari、OP不同浏览器兼容报告
IE.FF.Safari.OP不同浏览器兼容报告 1 浏览器内核简介 Trident IE浏览器(GreenBrowser绿色浏览器, 遨游浏览器....都是IE) Geckos Fi ...
- 让spark运行在mesos上 -- 分布式计算系统spark学习(五)
mesos集群部署参见上篇. 运行在mesos上面和 spark standalone模式的区别是: 1)stand alone 需要自己启动spark master 需要自己启动spark slav ...
- Linux下一些文件夹的含义
在 Linux系统里面,"分区",被称作"挂载点",简单明了的说,"挂载点"意思就是:把一部分硬盘容量,"分"成一个文件 ...
- CentOS 7下源码安装MySQL 5.7
网上说linux安装mysql服务分两种安装方法: ①源码安装,优点是安装包比较小,只有几十M左右,缺点是安装依赖的库多,安装编译时间长,安装步骤复杂容易出错: ②使用官方编译好的二进制文件安装,优点 ...
- 《深入理解Spark:核心思想与源码分析》一书正式出版上市
自己牺牲了7个月的周末和下班空闲时间,通过研究Spark源码和原理,总结整理的<深入理解Spark:核心思想与源码分析>一书现在已经正式出版上市,目前亚马逊.京东.当当.天猫等网站均有销售 ...
- 用Backbone.js创建一个联系人管理系统(一)
原文 Build a Contacts Manager Using Backbone.js: Part 1 在这个教程里我们将会使用Backbone.js,Underscore.js,JQuery创建 ...
