zoukankan      html  css  js  c++  java
  • Python——追加学习笔记(二)

    文件处理

    # 文件内移动
    seek()方法可以在文件中移动文件指针到不同的位置,offset字节代表相对于某个位置偏移量,默认为0,代表从文件开头算起,1代表从当前位置算起,2代表从文件末尾算起。
    seek()经常用来重设文件位置指针。
    eg.
    >>> f.name
    'anaconda-ks.cfg'
    >>> f.next()
    '#version=DEVEL
    '
    >>> f.next()
    '# System authorization information
    '
    >>> f.seek(0)
    >>> f.next()
    '#version=DEVEL
    '
    
    text()方法是对seek()方法的补充:他告诉你当前文件指针在文件中的位置——从文件起始算起,单位为字节。
    
    
    # 其他
    fileno()方法返回打开文件的描述符,这是一个整形,可以用在如os模块(os.read())的一些底层操作上。
    eg.
    >>> f = open('anaconda-ks.cfg', 'r')
    >>> print f.fileno()
    3
    
    
    flush()方法会直接把内部缓冲区的数据立刻写入文件,而不是被动地等待输出缓冲区被写入。一般用在文件关闭前刷新缓冲区。
    
    isatty()是一个布尔内建函数,当文件是一个类tty设备是返回True,否则返回False。
    eg.
    >>> f.isatty()
    False
    
    
    truncate()方法将文件截取到当前文件指针位置或者到给定size,一字节为单位。可以清空文件。
    
    
    ## 换行符
    print输出会在末尾自动增加一个换行符,而在语句之后增加一个逗号就可以避免这种行为。readline()和readlines()函数不会对行里的空白字符做任何处理,所以你有必要增加上逗号。如果省略逗号就会有两个换行符,其中一个是输入附带的,另外一个是print语句自动添加的。
    eg.
    >>> print 'Hello World!';print 'Yes, We Can!'
    Hello World!
    Yes, We Can!
    >>> print 'Hello World!',;print 'Yes, We Can!'
    Hello World! Yes, We Can!
    
    ## 文件内建属性
    file.closed # 文件是否关闭
    file.name  #文件名
    file.mode   #打开文件的方式
    
    ## 文件操作
    os.rename(old, new) #重命名
    os.mkdir()  #创建文件夹
    os.remove() #删除文件
    os.chdir()  #切换文件夹
    os.getcwd() #得到当前路径
    os.rmdir()  #删除文件夹
    
    补充:
    * 文件处理
    mkfifo()/mknod()  #创建命名管道/创建文件系统节点
    remove()/unlink() #删除文件
    rename()/renames() #重命名文件
    *stat() [包括stat()、lstat()、xstat()] #返回文件信息
    eg.
    >>> import os
    >>> os.system('ls')
    anaconda-ks.cfg  fan  lustre-master.zip  test.log
    0
    >>> os.stat('anaconda-ks.cfg')
    posix.stat_result(st_mode=33152, st_ino=9240863, st_dev=64768L, st_nlink=1, st_uid=0, st_gid=0, st_size=955, st_atime=1513158628, st_mtime=1509810306, st_ctime=1509810306)
    
    symlink() #创建符号链接
    utime() #更新时间戳
    tmpfile()   #创建并打开(‘w+b’)一个新的临时文件
    walk()  #生成一个目录树下的所有文件名
    
    * 目录/文件夹
    chdir()/fchdir() #改变当前目录/通过一个文件描述符改变当前工作目录
    chroot #改变当前进程的根目录
    listdir()   #列出指定目录的文件
    
    * 访问/权限
    access()    #检验权限模式
    chmod()     #改变权限模式
    chown()/lchown()      #改变owner和group ID/功能相同,但不会跟踪链接
    umask()     #设置默认权限模式
    
    * 文件描述符操作
    open()      #底层的操作系统open(对于文件来说,使用标准的内建open()函数)
    read()/write()      #根据文件描述符读取/写入数据
    dup()/dup2()        #复制文件描述符/功能相同,但是是复制到另一个文件描述符
    
    * 设备号
    makedev()       #从major和minor设备号创建一个原始设备号
    major()/minor()     #从原始设备号获得major/minor设备号
    
    ## os.path模块中的路径名访问函数
    
    * 分割
    basename()      #去掉目标路径,返回文件名
    dirname()       #去掉文件名,返回目录路径
    join()      #将分离的各部分组合成一个路径名
    split()     #返回(dirname(),basename())元组
    splitdrive()        #返回(drivename,pathnam)元组
    splittext()     #返回(filename, extension)元组
    
    * 信息
    getatime()      #返回最近返问时间
    getctime()      #返回文件创建时间
    getmtime()      #返回文件最近修改时间
    getsize()       #返回文件大小(以字节为单位)
    eg.     >>> os.path.getsize('test.log')
    48
    
    * 查询
    exists()    #指定路径(文件或者目录)是否存在
    isabs()     #指定路径是否为绝对路径
    isdir()     #指定路径是否存在且为一个目录
    isfile()    #指定路径是否存在且为一个文件
    islink()       #指定路径是否存在且为一个符号链接
    ismount()       #指定路径是否存在且为一个挂载点
    samefiel()      #两个路径名是否指向一个文件
    
    eg. >>> os.path.exists('test.log')
    True
    >>> os.path.isfile('test.log')
    True
    >>> os.path.isdir('test.log')
    False
    >>> os.path.islink('test.log')
    False
    >>> os.system('cp test.log test01.log')
    0
    >>> os.system('ls')
    anaconda-ks.cfg  fan  lustre-master.zip  test01.log  test.log
    0
    >>> os.path.samefile('test.log', 'test01.log')
    False
    
    
    ## 命令行参数
    sys.argv 是命令行参数的列表
    len(sys.argv)是命令行参数的个数
    sys.argv[0]是程序的名称
    
    ## 相关模块
    bz2         #访问BZ2格式的压缩文件
    csv         #访问CSV文件
    filecmp     #用于比较目录和文件
    gzip/zlib   #读取GNU zip(gzip)文件(压缩需要zlib模块)
    zipfile     #用于读取ZIP归档文件的工具
    
    
    
  • 相关阅读:
    web.xml中 error-page的正确用法
    5.项目数据库设计--人事管理系统
    mod_jk是Apache服务器的一个可插入模块
    jBox使用方法
    ApacheHttpServer出现启动报错:the requested operation has failed解决办法
    ApacheHttpServer修改httpd.conf配置文件
    redis client protocol 分解
    Andorid Async-HttpClient阅览
    HDU-2857-Mirror and Light(计算几何)
    xcode armv6 armv7 armv7s arm64
  • 原文地址:https://www.cnblogs.com/iskylite/p/8033756.html
Copyright © 2011-2022 走看看