ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Python系统函数文件操作

2022-08-31 22:32:16  阅读:245  来源: 互联网

标签:文件 函数 open Python fin t1 import txt os


一、文件

  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()
    

标签:文件,函数,open,Python,fin,t1,import,txt,os
来源: https://www.cnblogs.com/yourblog/p/16644745.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有