Python随学随记(5)—— 文件I/O相关

  1. 文件对象不仅可以访问普通磁盘文件, 也可以访问任何其他类型抽象层面上的文件(类文件,如URL)
  2. 文件只是连续的字节序列, 数据的传输经常会用到字节流, 字节流可能是由单个字节或大块数据组成
  3. open(fname, mode[rwabU], buffering[num])提供初始化I/O操作的通用接口, 成功会返回一个文件对象(句柄), 否则报错 mode参数中的U:换行符支持
  4. file()是工厂函数,与open()同, 常在判断对象类型时用:instance(obj, file)
  5. 通用换行符支持(UNS):用U打开时, 所有的行分隔符通过Python的输入方法返回时都会被替换为换行符NEWLINE(\n),支持包含不同类型行结束符的文件
  6. 输入:全读read(size) 读行readline(size) 返列表readlines(sizhint)
    xreadlines():每次读一块, 用for时减少占用, 效果同iter(file)
    输出:write() writelines()
  7. seek(num,[012])移动文件指针 , tell()取当前文件指针位置 (例如想读取两次同文件内容, read后跳到0再read)
  8. 打开文件后记得close(), 虽然有垃圾回收, 不显式地关闭文件可能丢失输出缓存区的数据
  9. fileno()返回打开文件的描述符(用于底层操作) flush()直接把内部缓存区中的数据立刻写入文件
    truncate()截取到当前文件指针位置,以字节为单位
  10. os模块中关于分隔符属性:
    sep(路径名分隔符) linesep(行分隔符) pathsep(路径分隔符) curdir(当前目录) pardir(当前父目录)
  11. 行分隔符\n的长度是1
  12. 文件内建属性:closed encoding mode name newlines softspaces
  13. 一般程序执行就可以访问三个标准文件:标准输入(raw_input的接收源)、标准输出(pinrt的输出源)、标准错误, 即这些文件已被打开, 知道句柄就可访问
    python中可通过sys模块来访问句柄 sys.stdin/stdout/stderr sys.*是文件, 需要自行处理换行符
  14. sys.argv命令行参数的列表, len(argv)就是argc, argv[0]一直是程序的名称
  15. 辅助处理命令行参数的模块:简易:getopt 复杂:optparse
  16. os模块中文件系统主要函数:
    mkfifo()/mknod() remove()/unlink() rename()/renames() 文件信息*stat()
    symlink() utime() tmpfile() 生成目录下文件名walk()
    chdir()/fchdir() chroot() listdir() getcwd()/getcwdu()
    mkdir()/makedirs() rmdir/removedirs() 查权限access() chmod()
    chown()/lchown() umask() open()/read()/write()复制文件描述符dup/dup2
    创建原始设备号makedev() 获取设备号major/minor()
  17. os.path中文件系统常用函数:
    basename() dirname() join() split() geta/c/mtime()
    exsits() isabs() isdir() isfile() samefile()
  18. 永久存储模块(对象持久化): 可以把用户的数据归档保存起来供以后使用, 是介于磁盘文件系统和RDBMS之间的一个利器
    • marshalpickle模块:将比基本类型复杂的对象转换为一个二进制数据集合, 可实现数据的扁平化(序列化or顺序化)
    • DMB系模块:提供python字符串的永久性储存, 用传统的DBM格式写入数据(自动择优anydbm,dbhash/bsddb、dbm、gdbm、功能最少dumbdbm)
    • shelve结合了两者的转换和存储(cPickle+anydbm),允许并发读, 但不能共享读/写访问
  19. marshal和pickle的区别:marshal只能处理简单的python对象, pickle可以处理递归对象(cPickle是它的增强版)
  20. DBM系模块为对象提供一个命名空间,并具备字典和文件对象的特点, 但是只能储存字符串, 不能对python对象进行序列化
  21. os.path.expanduser()中支持~(用户目录)字符, 传入一个带~的,返回一个绝对路径
  22. 文件I/O相关模块:
    base64(二进制和字符串) binascii(二进制和ASCII) bz2(类似gzip) csv filemap(比较目录/文件)
    fileinput(多个文本的迭代器) getopt/optparse(args的处理) glob/fnmatch(Unix通配符匹配)
    gzip/zlib(解/压gzip文件) shutil(高级文件访问) c/StringIO(字符串类接口)
    tarfile(读写TAR归档文件) tempfile(创建临时文件) zipfile(读取ZIP文件) uu(uu格式的解/编码)
  23. 一些python类文件对象:
    socket对象(socket模块):用于网络和文件
    popen*()文件对象(os和popen2模块):管道连接
    fopen()(os模块):底层文件访问
    由URL建立到指定web服务器的网络连接(urllib模块)
  24. getopt模块:搭配sys.argv使用, getopt函数返回两个列表:optsargs
    opts为分析出的格式信息,它是一个两元组的列表,每个元素为:(选项串,附加参数), 如果没有附加参数则为空串
    args为不属于格式信息的剩余的命令行参数
    例:’-h短开关 -o短带参 –help长开关 –output=长带参 file1(没识别) file2(没识别)’

  25. 不同系统分隔符差异:

系统行分隔符路径分隔符
POSIX(Unix/Mac)\n (NEWLINE)/
旧Mac:\r (RETURN):
DOS/Win:\r\n\
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值