小白入门python---day3_Python文件操作,Python的包与模块

文件操作

读取文件

open('filename','mode','encoding')
#(文件名,打开格式,打开编码格式)
#python3.0以后版本只有open这个操作文件函数.

在文件I/O中,要在文件中读取数据,程序要先调用系统函数并传送文件名,同时选取一个到达该文件的路径来打开文件.该函数取回一个顺序号,即文件句柄(file handle),该文件句柄对于打开的文件是唯一的识别依据。from 百度百科

fd=open('text.txt')
#把f作为文件句柄,包含文件名,字符串,硬盘内存初始位置.
#f在这里同样作为一个文件迭代器
for line in fd:
print line
fd.close()
#遍历文件每一行.

打开与关闭文件

r:只读打开,文件的默认打开方式  
w:文件不存在会创建,存在的话,会覆盖源文件(非追加)  
a:只追加模式打开(不能读)  
r+: 读写模式(写是追加) —>常用  
a+: 追加读写  
w+:写读模式(写同样是追加) ---->不常用  
rb:二进制读模式(一般用来做网络传输数据的时候,因为网络传输都是基于二进制格式的,所以必须用b) python 2.x 是可以用str传输的  
r+b:以二进制读写模式打开  
w+b:以二进制写读模式打开  
a+b:以二进制追加及读模式打开  
b:使用二进制模式(特殊文件需要用文本模式传输的话,建议使用b)  
注:
U:表示在读取的时候,可以将‘\r\n’ 转换成 \n (与r或r+模式连用)这样的好处是方便windows上到Linux的使用
  因为回车符在windows上表示为\r\n 而Linux上 表示为\n

二进制处理文件不代表文件内容一开始就已经是10010,它仅仅是一个文件的编码形式,str类型文件也可以使用二进制文件来处理,但是我们在写入时必需要先转换成二进制格式.

使用with

使用with关键字可以不关闭文件来打开文件(我也不知道自己在说什么,看例子吧),但是所有打开文件的操作都要缩进,包含在with下面.
这种情况下不需要明确指定close,当出现新代码没有缩进时,文件自动关闭.

with open(r'somefileName') as somefile:    
    for line in somefile:
            print line  
                  # ...more code

使用了 with 语句,不管在处理文件过程中是否发生异常,都能保证 with 语句执行完毕后已经关闭了打开的文件句柄。如果使用传统的 try/finally 范式,则要使用类似如下代码:

somefile = open(r'somefileName')
try:
    for line in somefile: 
           print line        
           # ...more code
finally:    
    somefile.close()

比较起来,使用 with 语句可以减少编码量。
此处再介绍

nested 函数

nested 可以将多个上下文管理器组织在一起,避免使用嵌套 with 语句。

with nested(A(), B(), C()) as (X, Y, Z):    
      # with-body code here
##上下代码基本等价
with A() as X:
    with B() as Y:
            with C() as Z:             
            # with-body code here

一句话:有异常发生时,不再抛出异常.
(程序抛出异常可能最后不能关闭文件)

包与模块

模块

我们会把一整个写好了函数的.py文件定义为模块,模块只有被调用或者直接使用两种途径.另外,使用模块时不需要考虑名字与其他模块冲突,但是要区分不同模块.
模块一共三种:
python标准库
第三方模块
应用程序自定义模块

为了解决多人个性化编程的重复问题我们引入了包的概念
每个人建立自己的一个独立的文件夹,这个文件夹专门用来存放本人使用的模块.
python Packaget翻译成中文就叫做python包文件
创建一个包文件夹的时候一定会自动创建一个__init__.py文件.
从目录级别来组织模块的,本质上也是被导入的,目录下有 init 文件的都可以理解为包,在import时,其实导入的就是包下的 init.py 文件。

import导入,调用

import os as zhu  # 导入时并定义别名,可以在末尾加注释.
import module,module1,module2  # 一次导入多个模块(不建议)
print(os.strftime('%Y-%m-%d %H:%M:%S'))

注意:使用import方式会导入包中的所有函数。使用时注意前缀名,

from导入,调用

from module import func  # 调用时可以直接使用func,而不必使用module.func来调用
from module import * # 导入所有函数~
print(func(%Y-%m-%d %H:%M:%S))

PS:func来自哪个文件,那么func内部调用的变量,以其所在文件中的环境变量为准

python内置模块

OS模块~

OS模块简单的来说它是一个Python的系统编程的操作模块,可以处理文件和目录这些我们日常手动需要做的操作,和所在的操作系统版本无关。~

logging模块~

logging模块用于日志的打印记录等,是一个健壮的Python程序所必须具有的模块。
logging模块支持的日志级别主要有五种:DEBUG,INFO,WARNING,ERROR,CRITICAL。优先级为:CRITICAL > ERROR > WARNING > INFO > DEBUG 。 默认的级别为WARNING。Python只会打印比当前级别高的日志,比如我同时刷出了INFO和ERROR级别的日志,如果我的日志级别设置的为WAIRNING,那么只会打印ERROR的日志。~

sys模块~

ys模块负责程序与python解释器的交互,提供了一系列的函数和变量,用于操控python的运行时环境。

sys.path # 列出当前Python环境变量,也就是导入时模块的搜索路径
sys.argv # 类似于shell脚本的$1 $2 ,用于传递命令行参数,使用列表进行传递
sys.stdout.write(‘#’) # 在屏幕上输出,但是不换行,配合for循环,比较适合用来做进度条等
sys.stdout.flush() # 配合sys.stdout.write使用,把每次输出的信息,强制刷新到屏幕上,达到动态的效果~

##
import sys,time
for i in range(20):
     sys.stdout.write('=')
     sys.stdout.flush()
     time.sleep(1)~
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值