python学习 (三)模块、字符处理和输入输出

内容引自

http://www.pythondoc.com/pythontutorial27/modules.html

当你使用以下方式运行 Python 模块时,模块中的代码便会被执行:

python fibo.py <arguments>

模块中的代码会被执行,就像导入它一样,不过此时 name 被设置为 "main"。这相当于,如果你在模块后加入如下代码:

if __name__ == "__main__":
    import sys
    fib(int(sys.argv[1]))

模块的搜索路径

导入一个叫 spam 的模块时,解释器先在当前目录中搜索名为 spam.py 的文件。如果没有找到的话,接着会到 sys.path 变量中给出的目录列表中查找。sys.path 变量的初始值来自如下:

输入脚本的目录(当前目录)。

环境变量 PYTHONPATH 表示的目录列表中搜索

(这和 shell 变量 PATH 具有一样的语法,即一系列目录名的列表)。

Python 默认安装路径中搜索。

实际上,解释器由 sys.path 变量指定的路径目录搜索模块,该变量初始化时默认包含了输入脚本(或者当前目录),PYTHONPATH 和安装目录。这样就允许 Python 程序了解如何修改或替换模块搜索目录。需要注意的是由于这些目录中包含有搜索路径中运行的脚本,所以这些脚本不应该和标准模块重名,否则在导入模块时 Python 会尝试把这些脚本当作模块来加载。这通常会引发错误。请参见 标准模块 以了解更多的信息。
字符串处理

str.rjust()  #将字符串格式化为指定长度(空格填充)并右对齐
str.ljust()  #将字符串格式化为指定长度(空格填充)并左对齐
str.center() #将字符串格式化为指定长度(空格填充)并居中
str.zfill()  #它用于向数值的字符串表达左侧填充 0

方法 str.format() 的基本用法如下:

>>> print 'We are the {} who say "{}!"'.format('knights', 'Ni')
We are the knights who say "Ni!"

大括号和其中的字符会被替换成传入 str.format() 的参数。大括号中的数值指明使用传入 str.format() 方法的对象中的哪一个:

>>> print '{0} and {1}'.format('spam', 'eggs')
spam and eggs
>>> print '{1} and {0}'.format('spam', 'eggs')
eggs and spam

如果在 str.format() 调用时使用关键字参数,可以通过参数名来引用值:

>>> print 'This {food} is {adjective}.'.format(
...       food='spam', adjective='absolutely horrible')
This spam is absolutely horrible.
文件读写

f = open('workfile', 'w')

第一个参数是一个标识文件名的字符串。第二个参数是由有限的字母组成的字符串,描述了文件将会被如何使用。可选的 模式 有:'r',此选项使文件只读;'w',此选项使文件只写(对于同名文件,该操作使原有文件被覆盖);'a',此选项以追加方式打开文件;'r+',此选项以读写方式打开文件;模式参数是可选的。如果没有指定,默认为 'r' 模式。

在 Windows 平台上,'b' 模式以二进制方式打开文件,所以可能会有类似于 'rb', 'wb', 'r+b' 等等模式组合。Windows 平台上文本文件与二进制文件是有区别的,读写文本文件时,行尾会自动添加行结束符。这种后台操作方式对 ASCII 文本文件没有什么问题,但是操作 JPEG 或 EXE 这样的二进制文件时就会产生破坏。在操作这些文件时一定要记得以二进制模式打开。在 Unix 上,加一个 'b' 模式也一样是无害的,所以你可以一切二进制文件处理中平台无关的使用它。

f = open('workfile', 'w')
f.read(1024)
f.readline()
f.readlines(n)#返回一个list
# readlines方法指定参数后,会读取接近n个字节的内容,但是当n值小于DEFAULT_BUFFER_SIZE时,会将n舍入到DEFAULT_BUFFER_SIZE,可以通过以下方式查看DEFAULT_BUFFER_SIZE大小,默认为8192bit
import io
print io.DEFAULT_BUFFER_SIZE


for line in f:
    print(line, end='')


f.tell() 返回一个整数,代表文件对象在文件中的指针位置,该数值计量了自文件开头到指针处的比特数。需要改变文件对象指针话话,使用 f.seek(offset,from_what)。指针在该操作中从指定的引用位置移动 offset 比特,引用位置由 from_what 参数指定。 from_what 值为 0 表示自文件起始处开始,1 表示自当前文件指针位置开始,2 表示自文件末尾开始。from_what 可以忽略,其默认值为零,此时从文件头开始

在文本文件中(那些没有使用 b 模式选项打开的文件),只允许从文件头开始计算相对位置(使用 seek(0, 2) 从文件尾计算时就会引发异常)。
当你使用完一个文件时,调用 f.close() 方法就可以关闭它并释放其占用的所有系统资源

用关键字 with 处理文件对象是个好习惯。它的先进之处在于文件用完后会自动关闭,就算发生异常也没关系。它是 try-finally 块的简写:

>>> with open('/tmp/workfile', 'r') as f:
...     read_data = f.read()
>>> f.closed
True
json

变量x--->json字符串:json.dumps(x) #encode
json字符串---->变量:json.loads() #decode
json.dump(x,f) 将内容写到文件
json.load(f) 从文件读

comments powered by Disqus
京ICP备16019137号-1