Python系统函数文件操作

一、文件

  1. 用open创建文件

    import os
    fout = open('ops.txt', 'wt')
    fout.close()
    
  2. 用exists()检查文件或目录是否存在

    传入绝对路径或者相对路径,存在返回True不存在返回False

    import os
    os.path.exists('opt.txt')   # return True
    os.path.exists('.')    # True
    
  3. 用isfile()检查是否是文件

    import os
    os.path.isfile(name)   # 是否是文件
    os.path.isdir(name)    # 是否是目录
    os.path.isabs()    # 是否是绝对路径
    
  4. 用copy()复制文件

    import shutil
    shutil.copy('t1.txt', 't2.txt')
    shutil.move('t1', 't2')
    
  5. 用rename()重命名文件

    import os
    os.rename('t1.txt', 't2.txt')
    
  6. 用link()或者symlink()创建链接

    link()创建硬链接,symlink()创建软链接

    import os
    os.link('t1.txt', 't2.txt')
    os.path.islink('t2.txt') # False
    os.symlink('t1.txt', 't2.txt')
    os.path.islink('t2.txt') # True
    
  7. 使用chmod()修改权限

    import os
    os.chmod('t1.txt', 0o400)
    import stat
    os.chmod('t1.txt', stat.S_IRUSR)
    
  8. 使用chown()修改所有者

    import os
    uid = 5
    gid = 22
    os.chown('oss', uid, gid)
    
  9. 用abspath()获取绝对路径名

    import os
    # pwd /usr/gaber
    os.path.abspath('t1.txt')  # /usr/gaber/t1.txt
    
  10. 使用realpath()获取符号链接的路径名

    import os
    # t1.txt ---> t2.txt
    os.path.realpath('t2.txt') # t1.txt的路径
    
  11. 用remove()删除文件

    import os
    os.remove('t1.txt')
    

二、目录

  1. 使用mkdir()创建目录

    import os
    os.mkdir('dir1')
    
  2. 使用rmdir()删除目录

    import os
    os.rmdir('dir1')
    
  3. 使用listdir()列出目录内容

    import os
    os.listdir('dir1')  # [] 目录dir1下的子目录和文件列表
    
    dir1
    ├── childdir
    │   └── t2.txt
    └── t1.txt
    
    import os
    os.listdir('dir1') # ['childdir', 't1.txt']
    
  4. 使用chdir()修改当前目录

    import os
    os.chdir('dir2')
    
  5. 使用glob()列出匹配文件

    *会匹配任意名称

    ?会匹配一个字符

    [abc]会匹配字符a、b、c

    [!abc]会匹配除了a、b、之外的所有字符

    import glob
    glob.glob('m*') # m开头的文件和目录
    

三、文件的输入输出

  1. 使用open()打开文件

    f = open(filename, mode)
    # f为文件对象 filename 文件名
    # mode: r(读) w(写,不存在则新建) x(不存在的情况下新建) a(如果文件存在则追加)
    # t(文本文件) b(二进制文件)
    
    f = open('t2.txt', 'rb') # 读文本文件的方式打开文件t2.txt
    
  2. 使用write()写文本文件

    s = 'hello world!'
    fout = open('t1.txt', 'wt')
    fout.write(s)
    fout.close()
    

    如果字符串源非常大,可以将数据分块,直到所有字符都被写入

    s = '123456..................'
    fout = open('t1.txt', 'wt')
    offset = 0
    chunk = 100
    while True:
      if offset > size:
        break
      fout.write(s[offset:offset+chunk])
      offset += chunk
    fout.close()
    
  3. 使用read()、readline()、或者readlines()读取文本文件

    read()一次读入所有文件、readline()一次读入一行文件、readlines()一次读入所有行文件到列表。

    fin = open('t1.txt', 'rt')
    s = fin.read()
    fin.close()
    
    s = ''
    fin = open('t1.txt', 'rt')
    # 每次读入100个字符
    chunk = 100
    while True:
      f = fin.read(chunk)
      if not f:
        break
      s += f
    fin.close()
    

    使用readline()每次读入一行

    s = ''
    fin = open('t1.txt', 'rt')
    while True:
      line = fin.readline()
      if not line:
        break
      s += line
    fin.close()
    

    使用迭代器读取文本文件

    s = ''
    fin = open('t1.txt', 'rt')
    for line in fin:
      s += line
    fin.close()
    

    使用readlines()一次读入所有的行,返回一个列表,内容为文件的单行文本。

    s = ''
    fin = open('t1.txt', 'rt')
    lines = fin.readlines()
    fin.close()
    for line in lines:
      print(line)
    
  4. 使用with自动关闭文件

    with open('t1.txt', 'wt') ad fout:
      fout.write(s)
    
  5. 使用write()写二进制数据

    bdata = bytes(range(0, 256))
    fout = open('t1.txt', 'wb')
    fout.write(bdata)
    fout.close()
    
  6. 使用read读二进制文件

    fin = open('bfile', 'rb')
    bdata = fin.read()
    fin.close()
    
posted @ 2022-08-31 22:21  我爱这世间美貌女子  阅读(43)  评论(0编辑  收藏  举报