Python学习part9

Task 9

笔记

文件与文件系统

打开文件:

open(file, mode=‘r’, buffering=None, encoding=None, errors=None, newline=None, closefd=True)
a. file : 必需,文件路径(相对或者绝对路径)。
b. mode : 可选,文件打开模式
c. buffering : 设置缓冲
d. encoding : 一般使用utf8
e. errors : 报错级别
f. newline : 区分换行符

文件对象方法:

fileObject.close()
用于关闭一个已打开的文件。关闭后的文件不能再进行读写操作, 否则会触发 ValueError 错误


f = open("将进酒.txt")
print('FileName:', f.name) # FileName: 将进酒.txt
f.close()

fileObject.read([size])
用于从文件读取指定的字符数,如果未给定或为负则读取所有。


f = open('将进酒.txt', 'r')
line = f.read(20)
print("读取的字符串: %s" % line)
# 读取的字符串: 君不见,黄河之水天上来,奔流到海不复回。
f.close()

fileObject.readline() 读取整行,包括 “\n” 字符。


f = open('将进酒.txt', 'r')
line = f.readline()
print("读取的字符串: %s" % line)
# 读取的字符串: 君不见,黄河之水天上来,奔流到海不复回。
f.close()

fileObject.readlines()
用于读取所有行(直到结束符 EOF)并返回列表,该列表可以由 Python 的
for… in … 结构进行处理。


f = open('将进酒.txt', 'r')
lines = f.readlines()
print(lines)
for each in lines:
 each.strip()
 print(each)
# 君不见,黄河之水天上来,奔流到海不复回。
# 君不见,高堂明镜悲白发,朝如青丝暮成雪。
# 人生得意须尽欢,莫使金樽空对月。
# 天生我材必有用,千金散尽还复来。
# 烹羊宰牛且为乐,会须一饮三百杯。
# 岑夫子,丹丘生,将进酒,杯莫停。
# 与君歌一曲,请君为我倾耳听。
# 钟鼓馔玉不足贵,但愿长醉不复醒。
# 古来圣贤皆寂寞,惟有饮者留其名。
# 陈王昔时宴平乐,斗酒十千恣欢谑。
# 主人何为言少钱,径须沽取对君酌。
# 五花马,千金裘,呼儿将出换美酒,与尔同销万古愁。
f.close()

fileObject.tell() 返回文件的当前位置,即文件指针当前位置。


f = open('将进酒.txt', 'r')
line = f.readline()
print(line)
# 君不见,黄河之水天上来,奔流到海不复回。
pos = f.tell()
print(pos) # 42
f.close()

fileObject.seek(offset[, whence]) 用于移动文件读取指针到指定位置。
a. offset :开始的偏移量,也就是代表需要移动偏移的字节数,如果是负数表示从倒数第几位开始。
b. whence :可选,默认值为 0。给 offset 定义一个参数,表示要从哪个位置开始偏移;0 代表从文件开
头开始算起,1 代表从当前位置开始算起,2 代表从文件末尾算起。

fileObject.write(str) 用于向文件中写入指定字符串,返回的是写入的字符长度。

fileObject.writelines(sequence) 向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的
换行符 \n 。

OS 模块中关于文件/目录常用的函数

os.getcwd() 用于返回当前工作目录。
os.chdir(path) 用于改变当前工作目录到指定的路径。

listdir (path=’.’) 返回 path 指定的文件夹包含的文件或文件夹的名字的列表。

os.mkdir(path) 创建单层目录,如果该目录已存在抛出异常。

os.makedirs(path) 用于递归创建多层目录,如果该目录已存在抛出异常。

os.remove(path) 用于删除指定路径的文件。如果指定的路径是一个目录,将抛出 OSError 。

os.rmdir(path) 用于删除单层目录。仅当这文件夹是空的才可以, 否则, 抛出 OSError 。

os.removedirs(path) 递归删除目录,从子目录到父目录逐层尝试删除,遇到目录非空则抛出异常。

os.rename(src, dst) 方法用于命名文件或目录,从 src 到 dst ,如果 dst 是一个存在的目录, 将抛出OSError 。

os.system(command) 运行系统的shell命令(将字符串转化成命令)

  1. os.curdir 指代当前目录( . )
  2. os.pardir 指代上一级目录( … )
  3. os.sep 输出操作系统特定的路径分隔符(win下为 \ ,Linux下为 / )
  4. os.linesep 当前平台使用的行终止符(win下为 \r\n ,Linux下为 \n )
  5. os.name 指代当前使用的操作系统(包括:‘mac’,‘nt’)

【例】

import os
print(os.curdir) # .
print(os.pardir) # ..
print(os.sep) # \
print(os.linesep)
print(os.name) # nt
  1. os.path.basename(path) 去掉目录路径,单独返回文件名
  2. os.path.dirname(path) 去掉文件名,单独返回目录路径
  3. os.path.join(path1[, path2[, …]]) 将 path1 , path2 各部分组合成一个路径名
  4. os.path.split(path) 分割文件名与路径,返回 (f_path,f_name) 元组。如果完全使用目录,它会将最后
    一个目录作为文件名分离,且不会判断文件或者目录是否存在。
  5. os.path.splitext(path) 分离文件名与扩展名,返回 (f_path,f_name) 元组。

import os
# 返回文件名
print(os.path.basename(r'C:\test\lsgo.txt')) # lsgo.txt
# 返回目录路径
print(os.path.dirname(r'C:\test\lsgo.txt')) # C:\test
# 将目录和文件名合成一个路径
print(os.path.join('C:\\', 'test', 'lsgo.txt')) # C:\test\lsgo.txt
# 分割文件名与路径
print(os.path.split(r'C:\test\lsgo.txt')) # ('C:\\test', 'lsgo.txt')
# 分离文件名与扩展名
print(os.path.splitext(r'C:\test\lsgo.txt')) # ('C:\\test\\lsgo', '.txt')
  1. os.path.getsize(file) 返回指定文件大小,单位是字节。
  2. os.path.getatime(file) 返回指定文件最近的访问时间
  3. os.path.getctime(file) 返回指定文件的创建时间
  4. os.path.getmtime(file) 返回指定文件的最新的修改时间
  5. 浮点型秒数,可用time模块的 gmtime() 或 localtime() 函数换算

import os
import time
file = r'.\lsgo.txt'
print(os.path.getsize(file)) # 30
print(os.path.getatime(file)) # 1565593737.347196
print(os.path.getctime(file)) # 1565593737.347196
print(os.path.getmtime(file)) # 1565593797.9298275
print(time.gmtime(os.path.getctime(file)))
# time.struct_time(tm_year=2019, tm_mon=8, tm_mday=12, tm_hour=7, tm_min=8, tm_sec=57, tm_wday=0, 
tm_yday=224, tm_isdst=0)
print(time.localtime(os.path.getctime(file)))
# time.struct_time(tm_year=2019, tm_mon=8, tm_mday=12, tm_hour=15, tm_min=8, tm_sec=57, tm_wday=0, 
tm_yday=224, tm_isdst=0)
  1. os.path.exists(path) 判断指定路径(目录或文件)是否存在
  2. os.path.isabs(path) 判断指定路径是否为绝对路径
  3. os.path.isdir(path) 判断指定路径是否存在且是一个目录
  4. os.path.isfile(path) 判断指定路径是否存在且是一个文件
  5. os.path.islink(path) 判断指定路径是否存在且是一个符号链接
  6. os.path.ismount(path) 判断指定路径是否存在且是一个悬挂点
  7. os.path.samefile(path1,path2) 判断path1和path2两个路径是否指向同一个文件
序列化与反序列化:

pickle模块中最常用的函数为:
pickle.dump(obj, file, [,protocol]) 将 obj 对象序列化存入已经打开的 file 中。

  1. obj :想要序列化的 obj 对象。
  2. file :文件名称。
  3. protocol :序列化使用的协议。如果该项省略,则默认为0。如果为负值或 HIGHEST_PROTOCOL ,则使用最
    高的协议版本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值