Python基础学习<七>

文件操作

标准输入和标准输出

输入(raw_input/input)—> 程序处理 —> 输出(print)
  • 操作系统不允许普通的程序直接操作磁盘,所以,读写文件实质是请求操作系统打开一个文件对象(文件描述符),然后,操作系统提供的接口,通过文件对象操作文件。

管理文件的步骤

  • 打开文件
    f = open(“filename”) #创建文件对象f,type(f)=file,可迭代,若文件不存在,open()函数抛出IOError
  • 处理文件
    f.read() # 读取文件所有内容
    f.write(“hello”) # 不能往文件中写入,因为默认文件以r的模式打开;
  • 关闭并保存文件
    f.close() #释放系统资源

文件的基本操作

文件的打开f = open (“path”,”mode”)

  • r 模式
    以读的方式打开,定位到文件开头 , 默认的 mode。文件不存在直接报错,文件只能读取,不能写入。
  • r+模式
    以读写的方式打开,定位文件开头 , 可以写入内容到文件
  • w 模式
    以写的方式打开,打开文件的时候会清空文件的内容,并且不能读
  • w+模式
    以读写的方式打开,定位到文件头,并且打开文件的时候也会清空文件的内容
  • a模式
    以写的方式打开,定位到文件的末尾,是一个追加的操作 , 但并不允许读
  • a+模式
    以读写的方式打开,定位到文件的末尾,追加的方式。

注:在使用以上 mode 打开文件的时候,如果增加了b 模式,表示以二进制方式打开

文件的读取f.read()

如果文件打开成功,接下来,调用 read() 方法可以一次读取文件的全部内容;

文件的关闭f.close()

文件使用完毕后必须关闭,因为文件对象会占用操作系统的资源

文件的其他操作

  • f.flush()函数,他将缓冲区中的内容写入到硬盘中
  • f.seek(offset[,whence]),函数,offset表示移动多少字节,大于零向右偏,小于零向左偏。whence为1的时候表示相对于当前位置移动的,当是2的时候从文件的末尾往后移动,但不一定所有的平台都支持;为0的时候表示从开头往后移动.
  • fileno()函数,返回当前的文件描述符,一个数字
  • isatty()函数,当前打开的文件是否是一个终端设备,close属性,当前文件是否关闭返回True,False。

练习

#显示文件中所有的行,但忽略以#号开头的行。
f = open("world.md","a+")
for i in f :
    i = i.strip()
    if not i.startswith("#"):
        print i 
f.close()
#下面为更高级一点的代码,在这段程序执行完毕之后自动关闭文件
with open("world.md","a+") as f :
    for i in f :
        i = i.strip()
        if not i.startswith("#"):
            print i

模块

模块的实质

  • 模块实质上就是一个以.py结尾的文件,可以被其他py文件调用;导入模块时,会去python的默认搜索路径中寻找;

导入模块的路径

  • python的默认搜索路径sys.path
    添加自定义的搜索路径时,sys.path是一个列表,
    sys.apth.append(“path”);
  • sys.path.append(“/home/kiosk/1-Pythonv3/day08/code”)
  • sys.path.insert(0,’/home/kiosk’)
    导入一个模块的实质是将模块的文件重新运行一次;
import  sys
print sys.path
#这两行代码就可以打印出导入模块的路径

导入模块的方法

import module1,module2
from 模块名 import 函数名
from 模块名 import 函数名 as 函数别名
import 模块名 as 函数别名

模块的分类

  • 内置模块(os,sys,time)
  • 自定义模块
  • 第三方模块 #开源

常用的内置模块

os,sys,time,datetime,json/pickle,shutil,random

  • 导入一个包的实质是运行包里面的init.py文件;
  • 导入包的方法:
    import 包名
    from 包名 import 模块名
    import 包名
  • 常用的几种方式
    1)调用模块:from 包 import 模块
    访问:模块.函数()
    2)调用模块:import 模块
    访问:包.模块.函数()

练习

  • 实现队列的基本操作
#!/bin/python
class MyQueue(object):
    def __init__(self):
        self.queue = []
    def push(self,value):
        self.queue.append(value)
    def pop(self):
        if not self.queue == []:
            self.queue.pop(0)
        else:
            print "Empty"
    def isEmpty(self):
        return self.queue ==[]
    def show(self):
        for i in  self.queue:
            print i,
q = MyQueue()
print "zheng zai ru dui"
q.push(1)
q.push(2)
q.push(3)
print "nei ront  "
q.show()
print  "\nzheng zai chu dui"
q.pop()
print "nei rong"
q.show()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值