with open(filename1, 'rb') as fp1:
with open(filename2, 'rb') as fp2:
with open(filename3, 'rb') as fp3:
for i in fp1:
j = fp2.readline()
k = fp3.readline()
print(i, j, k)
注意这里只能对单个文件进行for循环读取,不能写成:
for i, j, k in fp1, fp2, fp3:
print(i, j, k)
但可使用强大的zip操作:
for i, j, k in zip(fp1, fp2, fp3):
print(i, j, k)
这样层层的嵌套未免啰嗦,with结构支持一种更简洁的写法:
with open(filename1, 'rb') as fp1, open(filename2, 'rb') as fp2, open(filename3, 'rb') as fp3:
for i in fp1:
j = fp2.readline()
k = fp3.readline()
print(i, j, k)
或者使用更为优雅的写法,此时需要contextlib语法糖:
from contextlib improt ExitStack
with ExitStack() as stack:
files = [stack.enter_context(open(fname)) for fname in [filename1, filename2, filename3]]
for i, j, k in zip(files[0], files[1], files[2]):
print(i, j, k)
1先配置环境变量,比如你的内置函数放在c盘下x.py,那么
import sys
sys.path.append('c:\\')2
到你要引用的地方
import x就可以了,注意如果有冲突最好用包(Package)
每一个包目录下面都会有一个__init__.py的文件,这个文件是必须存在的,否则,Python就把这个目录当成普通目录(文件夹),而不是一个包。__init__.py可以是空文件,也可以有Python代码,因为__init__.py本身就是一个模块,而它的模块名就是对应包的名字。调用包就是执行包下的__init__.py文件。
跨包调用(当前目录下有modulepack1包):
1
from
modulepack1[.modulepack2]
import
module
如果当前目录下能够找到要调用的包,可以直接from包import模块,如果当前目录找不到要调用的包,需要向sys.path添加包的所在绝对路径。
import一个包名,就等于执行了这个包下的__init__文件。
方案如下:将另一个py做成一个包,或者直接和调用文件放在同一个目录下;
在调用者文件头引入:from py名字 import *;
这样就可以使用另一个py文件的所有函数了。