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()
    
四、案列:将指定目录下的所有文件重命名
import os

import sys

def rename_file(dir, rename_to):
	dirs = os.listdir(dir)
	file_lsit = [os.path.join(dir, d) for d in dirs if os.path.isfile(os.path.join(dir, d))]  # (1)
	# print(file_lsit)

	for f in file_lsit:
		# os.rename(f, f.name)
		name, extension = os.path.splitext(os.path.basename(f))  # (2)
		print(name)
		print(extension)
		# path = os.getcwd()
		path, file_name = os.path.split(f)  # (3)
		os.rename(f, f"{path}/{name}.mdx")  #(4)



if __name__ == '__main__':
	args = sys.argv[1:]  # (5)
	rename_file(args[0], 'mdx')

(1)生成一个目录dirs下的所有文件列表
(2)拆分文件的文件名和文件扩展名
(3)拆分文件的路径和文件名
(4)将文件重命名
(5)获取命令行参数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值