Python__26--文件操作

时间:2023-02-20 14:21:27

1 文件编码格式设定

Python__26--文件操作

程序开头 #encoding=gbk(编码格式)

2 文件的读写原理

  • Python操作文件>打开或新建文件>读写文件>关闭资源
  • 解释器运行py文件使用操作系统资源对硬盘中的文件进行操作
  • 语法规则 file=open(filename(文件名) [,mode(读或写,默认读),encoding(文本文件的编码格式,默认为gbk)]
file=open('a.txt','r')
print(file.readlines())
file.close()

3 常用文件打开操作

  • r,读取,不存在该文件会报错

    file=open('a.txt','r')
    print(file.readlines())
    file.close()
    
  • w,写入,如果不存在该文件则创建,存在则覆盖

    fp=open('b.txt','w') (当前目录写入)//指定路径写入fp=open('e:/a.txt', 'w')
    fp.write('python') //print('python',file=fp)
    fp.close()
    
  • a,以追加模式打开文件,存在则追加内容,不存在则创建

    file=open('b.txt','a')
    file.write('python')
    file.close()
    
  • b,以二进制打开文件,不能单独使用

    scr_file=open('logo.png','rb')
    target_file=open('copylogo.png','wb')
    target_file.write(scr_file.read())
    target_file.close()
    scr_file.close()
    
  • +,以读写的方式打开,如a+

4 文件对象的常用方法

Python__26--文件操作

  • read([size]),size为读取的字符数,若省略,则读取全部

  • readline(),读一行

  • readlines(),读取每一行,结果为一个列表

  • write(),将字符串str内容写入文件

  • writelines(),将字符串列表s_list写入文件,不加换行符

  • seek(size),将指针移到size处,0处为字符串最左端

    file=open('b.txt','r')
    file.seek(2)
    print(file.read())
    print(file.tell())
    file.close()
    
  • tell(),返回当前文件指针的位置

  • flush(),将缓存区内容写入文件,不关闭文件

  • close(),将缓存区内容写入文件,关闭文件

5 with语句,不管什么原因跳出with都可以顺利关闭

with open('logo.png','rb') as scr_file:
	with open('copylogo2.png','wb') as target_file:
		target_file.write(scr_file.read())

6 目录操作

6.1 os模块

  • 调用系统的程序

    • 打开系统软件
    • os.system('notepad.exe')
    • os.system('calc.exe')
  • 调用可执行文件

    • 打开第三方软件,可执行文件
    • os.startfile()
    • import os
    • os.startfile("D:\Program Files (x86)\Tencent\QQ\Bin\QQScLauncher.exe")
  • 执行命令

    • 只需将该命令行以字符串输入
    • os.system(pip insatll wordcould)
  • 相关函数

    Python__26--文件操作

    import os
    print(os.getcwd())
    os.chdir('E:\\pythonProject\\chap14')
    print(os.getcwd())
    lst=os.listdir('..\chap15')
    print(lst)
    os.mkdir('newdir3')
    os.makedirs('a/b/c')
    os.rmdir('newdir3')
    os.removedirs('a/b/c')
    

6.2 os.path模块

Python__26--文件操作

import os.path
print(os.path.abspath('test7.py'))
print(os.path.exists('test7.py'),os.path.exists('tast10.py'))
print(os.path.join('E:\\pythonProject','test7.py'))
print(os.path.split('E:\\pythonProject\\chap14'))
print(os.path.splitext('test7.py'))
print(os.path.basename('E:\\pythonProject\\chap14'))
print(os.path.dirname('E:\\pythonProject\\chap14'))
print(os.path.isdir('E:\\pythonProject\\chap14'))

6.3 实例

递归遍历所有文件,包括子目录下的文件

import os
path=os.getcwd()
lst_files=os.walk(path)
for dirpath,dirname,filename in lst_files:
	print(dirpath)
	print(dirname)
	print(filename)
	print('--------------------')
	for dir in dirname:
		rint(os.path.join(dirpath,dir))
	for file in filename:
		print(os.path.join(dirpath, file))
	print('--------------------')

列出指定目录下的所有py文件

import os
path=os.getcwd()
lst=os.listdir(path)
for filename in lst:
	if filename.endswith('.py'):
	print(filename