本节学习Python的格式化输出,文件操作以及json的简单用法


1.格式化输出


将非字符串类型转换成字符串,可以使用函数:str() 或者repr() ,(这两个函数的区别目前我还没搞懂,求解答)

>>> str([1,2,3,4])
'[1, 2, 3, 4]'
>>> repr([1,2,3,4])
'[1, 2, 3, 4]'
>>> str(10)
''
>>> repr(10)
''

可以使用str.ljust() 、str.rjust()、str.center()来设置字符串的对齐方式

>>> for x in range(1,11):
print str(x).ljust(2),str(x*x).ljust(3),str(x*x*x).ljust(4) 1 1 1
2 4 8
3 9 27
4 16 64
5 25 125
6 36 216
7 49 343
8 64 512
9 81 729
10 100 1000

我们也可以使用str.format()来设置字符串的对齐方式({}中填充^、<、>分别代表居中、左对齐、右对齐):

>>> for x in range(1,11):
print "{0:<2d} {1:<3d} {2:<4d}".format(x,x*x,x*x*x) 1 1 1
2 4 8
3 9 27
4 16 64
5 25 125
6 36 216
7 49 343
8 64 512
9 81 729
10 100 1000

str.format() 的其他使用方法:

>>> print "his name is {},his age is {}".format('Jack',30)
his name is Jack,his age is 30
>>> print "his name is {1},his age is {0}".format(30,'Jack')
his name is Jack,his age is 30
>>> print "his name is {name},his age is {age}".format(age=30,name='Jack')
his name is Jack,his age is 30
>>> print "pi is {0:.2f}".format(3.1415926)
pi is 3.14
>>> t={'name':'Jack','age':30}
>>> print "his name is {0[name]:s},his age is {0[age]:d}".format(t)
his name is Jack,his age is 30
>>> print "his name is {name:s},his age is {age:d}".format(**t)
his name is Jack,his age is 30

我们还有一种格式话输出的形式,如下所示:

>>> print "pi is %.2f" %(3.1415926)
pi is 3.14

2.文件操作


我们有一个名为1.txt的文件,我们可以通过如下语句打开它:

f=open("1.txt","r")     

open函数的第二个参数是可选参数,可以选择如下几种模式:

r:只读模式

w:写模式 ,如果文件不存在,自动创建

a:追加

r+:读写

注意:在window操作系统下,该参数可以是:b,代表以二进制形式打开文件,所以有了组合:rb,wb 或r+b

打开后,我们读取其中的全部内容:

f.read()

如果我们想一行一行的读取,可以使用f.readline()或者f.readlines()

f.readline():每次只读取一行

>>> f=open("1.txt","r")
>>> print f.readline()
this is first line >>> print f.readline()
this is second line >>> f.close()

f.readlines():读取所有行,并保存到一个列表中

>>> f=open("1.txt","r")
>>> print f.readlines()
['this is first line\n', 'this is second line\n', 'this is third line']
>>> f.close()

注意:如果我们使用的是读写模式(r+、w+ 或者a+的话),在写入后,马上读取,只会读取一个EOF

>>> f=open("1.txt","r+")
>>> f.write("this is first line")
>>> print f.read() >>>

出现上述情况的原因是当调用完f.write()函数后,指针移到了文件内容的末尾处。此时读取的话就只会读取到EOF,解决办法是设置指针到文件的起始位置

>>> f=open("1.txt","r+")
>>> f.write("this is first line")
>>> f.seek(0)
>>> print f.read()
this is first line

打开文件后,必须要记得使用f.close() 函数来关闭文件以释放资源。 一个好的使用习惯是,使用with open('file','mode') as f的形式来打开文件,这样在with代码块结束后,会自动关闭文件

>>> with open("1.txt","r+") as f:
print f.read() this is first line
>>> print f.closed
True

3.json


我们在读取文件的时候,读取到的数据类型都是string类型,但是有时候,我们可能需要存储一些复杂的数据类型,如:列表、字典到文件中,这时候如果我们读取文件的时候,返回的是字符串,我们还必须使用list(str)将其转换成列表或字典类型,这样的话,使得我们的操作变得复杂。而json正好可以解决这个问题

我们使用json 可以使数据结构转换成字符串表示,这被称为序列化,我们也可以让字符串表示转换成相应的数据结构,这被称为:反序列话

我们可以使用json.dumps(x) 来将对象x序列化成json的字符串表示形式:

>>> json.dumps([1,2,3,'abbbb'])
'[1, 2, 3, "abbbb"]'

我们还可以使用json.dump(x,f) 来将序列化的x写入文件f中:

>>> f=open("1.txt","r+")
>>> x=json.dumps([1,2,3,'abbbb'])
>>> json.dump(x,f)
>>> f.seek(0)
>>> print f.read()
"[1, 2, 3, \"abbbb\"]"

我们想要反序列的话,可以使用x = json.load(f)

>>> x=json.load(f)
>>> print x
[1, 2, 3, "abbbb"]

4、cPickle和Pickle

也是python的标准模块。cPickle和pickle的功能相似,只是cPickle是用c语言编写的。可以使用它们在文件中存储python的任何对象。之后可以把对象完整的取出来。这被称为持久的存储对象。

例子:将一个列表写进test.txt中

import cPickle as p
import os
filePath="E:\\study\\test.txt"
testList=[1,23,"teststr"]
f=file(filePath,"w")
p.dump(testList,f)
f.close()

我们再把这个列表从文件中取出来:

import cPickle as p
import os
filepath="E:\\study\\test.txt"
if os.path.exists(filepath):
f=open(filepath,"r")
print p.load(f)
f.close()
else:
print "file is not exist"

结果:[1, 23, 'teststr'],这样列表就成功的取出来啦。

注意:如果将import cPickle as p 替换成import json as p,那么最后取出对象打印出来的结果是:[1, 23,u 'teststr'],这是因为json库把json文件load成了Unicode对象。所以要变成str对象的话需要自己encode,方法可以这样:

import json as p
import os
filepath="E:\\study\\test.txt"
if os.path.exists(filepath):
f=open(filepath,"r")
getlist= p.load(f)
getStrList=[]
for i in getlist:
if type(i)==type(u'a'):
i= i.encode("utf-8") #convert Unicode to utf-8
getStrList.append(i)
print getStrList
f.close()
else:
print "file is not exist"

 但这种方法感觉效率有点慢。。。。 

  

(Python )格式化输出、文件操作、json的更多相关文章

  1. Python小代码_15_遍历指定路径下的所有文件和文件夹,并格式化输出文件路径文件名和文件夹名,文件大小,修改时间

    遍历指定路径下的所有文件和文件夹,并格式化输出文件路径文件名和文件夹名,文件大小,修改时间 import osimport datetime def print_tree(dir_path): for ...

  2. python 历险记(三)— python 的常用文件操作

    目录 前言 文件 什么是文件? 如何在 python 中打开文件? python 文件对象有哪些属性? 如何读文件? read() readline() 如何写文件? 如何操作文件和目录? 强大的 o ...

  3. Python的高级文件操作(shutil模块)

    Python的高级文件操作(shutil模块) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 如果让我们用python的文件处理来进行文件拷贝,想必很多小伙伴的思路是:使用打开2个 ...

  4. Python入门篇-文件操作

    Python入门篇-文件操作 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.文件IO常用操作 open:打开 read:读取 write:写入 close:关闭 readlin ...

  5. Python格式化输出的三种方式

    Python格式化输出的三种方式 一.占位符 程序中经常会有这样场景:要求用户输入信息,然后打印成固定的格式比如要求用户输入用户名和年龄,然后打印如下格式:My name is xxx,my age ...

  6. python os&shutil 文件操作

    python os&shutil 文件操作 # os 模块 os.sep 可以取代操作系统特定的路径分隔符.windows下为 '\\' os.name 字符串指示你正在使用的平台.比如对于W ...

  7. python格式化输出【转】

    今天写代码时,需要统一化输出格式进行,一时想不起具体细节,用了最笨的方法,现在讲常见的方法进行一个总结. 一.格式化输出 1.整数的输出 直接使用'%d'代替可输入十进制数字: >>> ...

  8. python基础篇(文件操作)

    Python基础篇(文件操作) 一.初始文件操作 使用python来读写文件是非常简单的操作. 我们使用open()函数来打开一个文件, 获取到文件句柄. 然后通过文件句柄就可以进行各种各样的操作了. ...

  9. Python之常用文件操作

    Python之常用文件操作

  10. python格式化输出及大量案例

    python格式化输出符号及大量案例 1.格式化输出符号 python格式化输出符号 格式化符号 含义 %c 转化成字符 %r 优先使用repr()函数进行字符串转化 %s 转换成字符串,优先使用st ...

随机推荐

  1. 减小Chrome的内存占用的参数

    步骤: 1.右击chrome浏览器快捷方式 属性  目标 后面添加 --purge-memory-button 2. 按 shift+esc 查看进程

  2. cmd窗口编码方式的修改

    cmd默认的编码是采用GBK   regedit HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe\CodePage 十进制:936 GB ...

  3. android 中获取网络状态、判断3G、2G、wifi网络、判断wifi是否打开、获取本机地址、获取本机串号IMEI整理

    代码如下:package com.android.xym; import java.io.IOException; import java.net.HttpURLConnection; import ...

  4. Hibernate常用Annotation标签说明

    @ javax.persistence.Entity 实体类定义,该标签表示当前类是一个Hibernate的数据库实体,对应着数据库中的某个表 位置:用于类级别 参数:无 样例:@Entity 注意: ...

  5. UVA 11426 - GCD - Extreme (II) (数论)

    UVA 11426 - GCD - Extreme (II) 题目链接 题意:给定N.求∑i<=ni=1∑j<nj=1gcd(i,j)的值. 思路:lrj白书上的例题,设f(n) = gc ...

  6. MySql数据库中,判断表、表字段是否存在,不存在就新增

    本文是针对MySql数据库创建的SQL脚本,别搞错咯. 判断表是否存在,不存在就可新增 CREATE TABLE IF NOT EXISTS `mem_cardtype_resource` ( ... ...

  7. 201671010142 2017-2 《java第十一章学习感悟》

    事件处理基础 事件源,事件监听器,事件监听器  监听器接口的实现,监听器对象所属类必须实现与事件源相对应的接口,即必须提供接口中方法的实现. 适配器类 当程序用户试图关闭一个框架窗口时,Jframe对 ...

  8. linux POSIX 信号量介绍

    信号量一.什么是信号量信号量的使用主要是用来保护共享资源,使得资源在一个时刻只有一个进程(线程)使用.多线程可以同时运行多个线程函数完成功能,但是对于共享数据如果不加以锁定,随意改变共享数据的值会发生 ...

  9. 【Hibernate步步为营】--最后的集合映射

    上篇文章具体讨论了组合对象映射的原理.它事实上指的是怎样将对象模型中的组合关系映射到关系模型中,它是通过使用Hibernate提供的<component>标签来实现的,并须要在该标签中加入 ...

  10. LVS 实现负载均衡原理及安装配置详解

    负载均衡集群是 load balance 集群的简写,翻译成中文就是负载均衡集群.常用的负载均衡开源软件有nginx.lvs.haproxy,商业的硬件负载均衡设备F5.Netscale.这里主要是学 ...