python-3

模块

将一些定义的函数方法和变量存放在py文件中,为一些脚本或交互式的解释器使用,那么这个文件就是模块。
模块是一个包含所有定义的函数和变量的文件,后缀名为py。模块可以被其它程序引入,利用 import 语句。

import module1
# 当解释器遇到 import 语句,如果模块在当前的搜索路径就会被导入。
# 搜索路径是一个解释器会先进行搜索的所有目录的列表。如想要导入模块 support,需要把命令放在脚本的顶端:
# 一个模块只会被导入一次

from modname import name1
# Python 的 from 语句让你从模块中导入一个指定的部分到当前命名空间中

from modname import *
# 把一个模块的所有内容全都导入到当前的命名空间也是可行的

模块除了方法定义,还可以包括可执行的代码。这些代码一般用来初始化这个模块。这些代码只有在第一次被导入时才会被执行。
每个模块有各自独立的符号表,在模块内部为所有的函数当作全局符号表来使用。

__name__属性

一个模块被另一个程序第一次引入时,其主程序将运行。如果我们想在模块被引入时,模块中的某一程序块不执行,我们可以用__name__属性来使该程序块仅在该模块自身运行时执行。
每个模块都有一个__name__属性,当其值是’main’时,表明该模块自身在运行,否则是被引入。

dir() 函数

内置的函数 dir() 可以找到模块内定义的所有名称。以一个字符串列表的形式返回:
如果没有给定参数,那么 dir() 函数会罗列出当前定义的所有名称

输入输出

python输出

python两种输出值的方式:表达式语句和print()函数。
另外,利用sys.stdout.write(),标准输出文件。
str.format()可以格式化输出
str.format():利用{}和:来标准化输出

# 使用位置参数
'my name is {} ,age {}'.format('hoho',18)
'my name is {1} ,age {0}'.format(10,'hoho')
'my name is {1} ,age {0} {1}'.format(10,'hoho')
li = ['hoho',18]
'my name is {} ,age {}'.format(*li)

# 使用关键字参数
'my name is {name},age is {age}'.format(name='hoho',age=19)
hash = {'name':'hoho','age':18}
'my name is {name},age is {age}'.format(**hash)

# 位置及关键字参数可以任意的结合:
 print('站点列表 {0}, {1}, 和 {other}。'.format('Google', 'Runoob', other='Taobao'))

# 填充与格式化
'{0:*>10}'.format(5)  # 右对齐 以*号填充,宽度10位
'{0:*<10}'.format(5)  # 左对齐
'{0:*^10}'.format(5)  # 居中对齐

# 精度与进制
 '{0:.2f}'.format(1/3)  # 浮点数,保留2位小数
  '{0:d}'.format(10)    # 十进制
 '{0:b}'.format(10)    # 二进制
 '{0:o}'.format(10)     # 八进制
 '{0:x}'.format(10)     # 16进制
 '{:,}'.format(12369132698)  #千分位格式化

# 百分比格式
'{:.2%}'.format(0.333)   


# 使用索引
li = ['hoho', 18]
'name is {0[0]} age is {0[1]}'.format(li)

python输入

python利用内置函数 input() 读入一行输入文本
通过导入 sys库,利用sys.stdin.readline()标准化输入

python读写文件

open()返回一个file对象open(filename, mode)
filename:包含了你要访问的文件名称的字符串值。
mode:决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读®。
mode类型:
r : 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb: 以二进制格式打开一个文件用于只读,文件指针将放在文件的开头
r+:打开一个文件用于读写,文件指针放在文件开头
rb+:以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
w:打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb:以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
w+:打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb+:以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
a: 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab:以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+: 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+: 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

# 写入文件
f = open("./tmp/foo.txt", "w")
f.write( "Python 是一个非常好的语言。\n是的,的确非常好!!\n" )  # f.write(string) 将 string 写入到文件中, 然后返回写入的字符数。
f.close()

# 读入文件
f = open("./tmp/foo.txt", "r")
str = f.read() # 为了读取一个文件的内容,调用 f.read(size), 这将读取一定数目的数据, 然后作为字符串或字节对象返回。
f.close()

f.readline() # f.readline() 会从文件中读取单独的一行。换行符为 '\n'。f.readline() 如果返回一个空字符串, 说明已经已经读取到最后一行。
f.readlines() # f.readlines() 将返回该文件中包含的所有行。以列表格式返回

f.tell() # 返回文件对象当前所处的位置, 它是从文件开头开始算起的字节数。
f.seek(offset, from_what) # 改变文件当前的位置
#from_what 的值, 如果是 0 表示开头, 如果是 1 表示当前位置, 2 表示文件的结尾,例如:
#seek(x,0) : 从起始位置即文件首行首字符开始移动 x 个字符
#seek(x,1) : 表示从当前位置往后移动x个字符
#seek(-x,2):表示从文件的结尾往前移动x个字符

f.close() # 当处理完文件后, 调用 f.close() 来关闭文件并释放系统的资源,如果尝试再调用该文件,则会抛出异常。

open()和 with open() 的区别

f = open(file_name, 'r')
for line in f:
	print(line)
f.close()

文件不存在时,open()函数会抛出一个 IOErroe错误。
文件使用完毕后,必须利用.close()关闭文件,否则文件会一直占用系统资源,导致溢出。
由于文件读写时都有可能产生IOError,一旦出错,后面的f.close()就不会调用。所以,为了保证无论是否出错都能正确地关闭文件,可以使用try … finally来实现:

f = open(file_name, 'r')
try:
	for line in f:
		print(line)
except:
	print("IOError")
finally:
	f.close()

python引入 with语句自动调用close方法
with创建临时运行环境,即with用于创建一个临时的运行环境,运行环境中的代码执行完后自动安全退出环境。

with open(file_name, "r") as f:
	print(f.read())

with的作用相当于之前的try … finally,但代码更加简洁

pickle模块

python中pickle模块实现了 基本数据的序列化和反序列化。
pickle序列化操作:程序中运行的对象信息保存到文件中去,永久存储。
pickle反序列化操作:从文件中创建上一次程序保存的对象。


pickle.dump(obj, open(file_name, "w"))
x = pickle.load(file)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值