python文件基本处理及os调用

1 基本操作

打开、读写、关闭。。。

# 打开文件 open()
f = open('hello.txt','w')

# 读取read(), 写入 write()
f.write('aaa')

# 关闭文件 close()
f.close()

2 文件打开模式open()

  • 语法 : 文件对象 = open(‘文件名’, ‘打开模式’)
模式描述
r以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
r+打开一个文件用于读写。文件指针将会放在文件的开头。
rb+以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
w打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
w+打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb+以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
a打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
  • 代码解释
# r:只读模式,遇到不存在文件,会报错
f = open('hello.txt','r')
f.close()

#  r+:读写模式,遇到不存在文件,会报错
#  文件指针指向开头,每次会覆盖原文的写入,此时指针指向尾部,直接读取返回空
f = open('hello.txt','r+')
f.write('ddddd')
print(f.read())
f.close()

# w: 写模式,遇到不存在文件,会新建文件;文件已存在时会覆盖原文
f = open('1.txt', 'w')
f.write('bbb')   # 每次执行时,原文只有bbb
f.close()

# a: 追加模式,遇到不存在文件,会新建文件;文件已存在时会在原文后追加
f = open('1.txt', 'a')
f.write('ccc')     # 多次执行后文件会有多个ccc
f.close()

如果open(‘文件名’) 不加模式,默认为 ‘r’ 只读模式

3 文件的读取

3.1 read()
  • 语法 文件名.read(num) 读取文件的字节num
'''
1.txt为
abcde
fghij
klmno
'''

f = open('1.txt', 'r')
print(f.read(11))   # 只读取11个字节,换行符 \n 占一个字节 , 此时文件指针指向第11个字符  
abcde
efghi

print(f.read())     # 默认为读取所有,从文件指针开始到文件最后
klmno

f.close()
3.2 readlines()
  • 语法:文件名.readlines() 读取文件全部,每行为一个列表元素,最后以一个列表显示
  • 代码
f = open('1.txt', 'r+')

content = f.readlines()
print(content)

['12345\n', '67891\n', '12345\n']
3.3 readline()
  • 语法: 文件名.readline() 每次读取一行
  • 代码
con = f.readline()
print(con)    # 12345

con = f.readline()
print(con)   #  67891

3.4 文件指针移动 seek()

  • 语法
文件对象.seek(偏移量 起始位置)

起始位置:

  • 0: 开头
  • 1: 当前位置
  • 2: 结尾

4. 文件备份

4.1 需求

对输入文件备份,新备份文件名称改为 文件名[备份].后缀

4.2 步骤分析

  • 用户输入
  • 生成新备份文件,称改为 文件名[备份].后缀
  • 对内容复制

4.3 代码

# 1. 用户输入备份文件名
old_name = input('请输入备份文件名:')

# 2. 生成空的备份文件,名称为 文件名[备份]
part = old_name.rpartition('.')

# 4. 优化:对输入文件名判断
if len(part[0]) > 0:
    prefix = part[0]

new_name = prefix + '[备份]' + part[1] + part[2]  # 对于 .txt文件 会报错,没有prefix变量

# print(new_name)

# 3. 将旧文件复制到新文件中
old_f = open(old_name, 'rb')    # 注意以二进制读入,避免格式出错
new_f = open(new_name, 'wb')    # 注意以二进制写入,避免格式出错

while True:                #  防止因文件过大而不能读入
    con = old_f.read(1024)    # 循环以1024字节读入
    if len(con) == 0:         # 当读完时,con长度为0,此时停止读入
        break
    new_f.write(con)      #  对读入文件写入

old_f.close()
new_f.close()

open(old_name, ‘rb’) # 注意以二进制读入,避免格式出错

5. 文件及文件夹操作

# 引入文件
import os

# 1. 文件/文件夹 重命名
os.rename('1.txt','2.txt')

# 2. 文件 删除
os.remove('2.txt')

# 3. 创建文件夹
os.mkdir('aa')

# 4.1 删除文件夹,只能删除空文件夹
os.rmdir('aa')
# 4.2 删除非空文件夹,递归删除多个文件夹且不为空
import shutil
shutil.rmtree('aa')

# 5. 当前文件工作目录
os.getcwd()

# 6. 改变当前工作文件夹
os.chdir('aa')
os.mkdir('bb')

# 7. 获取文件目录
print(os.listdir())

6. 批处理修改文件名称

import os

# 先找出该文件夹下所有文件名称,通过listdir()
dir_list = os.listdir()

# 加判断条件 flag = 1 为添加, flag = 2 为删除
flag = 2

# 循环批处理修改名称
for i in dir_list:
    if flag == 1:
        new_name = 'Python_' + i
        os.rename(i, new_name)
    elif flag == 2:
        l = len('Python_')
        os.rename(i, i[l:])

总结

  • 文件基本操作
    • 打开 open()
      • r / w / a
    • 读取
      • read(num) 读取num字节
      • readlines() 读取全部
      • reandline(num) 读取num行
    • 写入 write()
    • 关闭 close()
    • seek(偏移量,起始位置)
  • 文件及文件夹的操作
    • rename
    • remove
    • mkdir
    • rmdir
    • getcwd
    • listdir
    • chdir
  • 文件备份实验
  • 文件批处理重命名实验
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值