python 文件操作

#1.文件的基本操作
#1.1 打开文件 open()函数
#使用open()函数,可以打开一个已经存在的文件,或者创建一个新文件
#open(name, mode)
#name 要打开的目标文件名的字符串(可以包含文件所在的具体路径)
#mode 设置打开文件的模式(访问模式) : 只读,只写,追加等
'''
r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
w 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
w+ 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
'''

#1.2 write()方法用于向文件中写入指定字符串。
'''
在文件关闭前或缓冲区刷新前,字符串内容存储在缓冲区中,这时你在文件中是看不到写入的内容的。
如果文件打开模式带 b,那写入文件内容时,str (参数)要用 encode 方法转为 bytes 形式,
否则报错:TypeError: a bytes-like object is required, not 'str'。
fileObject.write( [ str ])
str -- 要写入文件的字符串。
返回的是写入的字符串长度
'''

#1.3 read()方法
# read() 方法用于从文件读取指定的字节数,如果未给定或为负则读取所有。
# fileObject.read([size])
# size -- 从文件中读取的字符数,包括 "\n" 字符。
# 返回从字符串中读取的字符。

#1.4 close()方法
# close() 方法用于关闭一个已打开的文件。关闭后的文件不能再进行读写操作, 否则会触发 ValueError 错误。 close() 方法允许调用多次。
# 当 file 对象,被引用到操作另外一个文件时,Python 会自动关闭之前的 file 对象。 使用 close() 方法关闭文件是一个好的习惯。
# fileObject.close();
# 无参数,无返回值

f = open('1.txt', 'w')
f.write('aaa')
f.close()
#python 模块 os 用来操作文件和文件夹
#1. 文件操作
#1.1 os.rename() 方法用于命名文件或目录
# 从 src 到 dst,如果dst是一个存在的目录, 将抛出OSError。
# 语法格式 : os.rename(src, dst)
# src : 要修改的目录名
# dst : 修改后的目录名
# 没有返回值
import os
# os.rename('1.txt', '1_1.txt')
# os.rename('1.txt', '1_1.txt')
#重命名不存在文件,报错 FileNotFoundError: [WinError 2] 系统找不到指定的文件。: '1.txt' -> '1_1.txt'


#1.2 os.remove() 方法用于删除指定路径的文件。如果指定的路径是一个目录,将抛出OSError。
#os.remove('1_1.txt')
#os.remove('1_1.txt') #删除不存在文件报错, FileNotFoundError: [WinError 2] 系统找不到指定的文件。: '1_1.txt'

#2. 文件夹操作
#2.1 创建文件夹操作
#os.mkdir() 方法用于以数字权限模式创建目录。默认的模式为 0777 (八进制)。
#语法:
# os.mkdir(path[, mode])
# path : 要创建的目录
# mode : 要为目录设置的权限数字
# 没有返回值
# help(os.mkdir)
# os.mkdir('temp_dir', 755)
# os.mkdir('temp_dir', 755)
# 文件夹存在时报错, FileExistsError: [WinError 183] 当文件已存在时,无法创建该文件。: 'temp_dir'

#2.2 删除文件夹
#os.rmdir() 方法用于删除指定路径的目录。仅当这文件夹是空的才可以, 否则, 抛出OSError。
# os.rmdir('temp_dir') #当目录不是空的时候 报错 OSError: [WinError 145] 目录不是空的。: 'temp_dir'
# os.removedirs('temp_dir')
# import shutil
# shutil.rmtree('temp_dir')

#2.3 getcwd() : 返回当前文件所在目录路径
print(os.getcwd())

#2.4 chdir() : os.chdir() 方法用于改变当前工作目录到指定的路径。
# os.chdir(path)
# path : 要切换到的新路径
# 返回值 : 如果允许则返回 True 不允许则返回 False
os.chdir('temp_dir')
print(os.getcwd())

#2.5 listdir() : os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表。
# 它不包括 . 和 .. 即使它在文件夹中。
# os.listdir(path)
# 返回值 : 返回指定路径下的文件和文件夹列表。
print(os.listdir('E:\MyProject\Python\heima\文件'))
#输出 ['1[备份].txt', 'seek函数.py', 'temp_dir', '文件.py', '文件和文件夹操作.py', '文件备份.py', '文件访问模式.py', '文件读操作.py']
#是一个列表, 是目录下的文件名和文件夹名
#3. seek()方法
# 用来移动文件指针
# 语法 : 文件对象.seek(offset, 起始位置)
# offset : 开始的偏移量,也就是代表需要移动偏移的字节数
# 起始位置 : 可选,默认值为 0。给offset参数一个定义,表示要从哪个位置开始偏移;
# 0 : 表示从文件开头位置算起
# 1 : 表示从当前位置算起
# 2 : 表示从文件末尾算起

f = open('1.txt', 'a+')
f_data = f.read()
print(f_data)  #输出为空,因为以a(追加)的方式打开文件,文件指针在结尾,结尾往后读,没有数据
f.seek(0, 0)   #将文件指针移到文件开头
f_data = f.read()
print(f_data)
'''
aaa33
111222
22eeee
33
4
5cvxdsd
'''
f.close()
#2. 文件读操作
f = open('1.txt', 'r')
#print(f.read())
'''
输出 
aaa33
111222
22eeee
33
4
5cvxdsd
'''
f.close()

f = open('1.txt', 'r')
#print(f.read(10))
'''
输出
aaa33
1112
'''
#这里读取10个字符,但是只打印9个字符,是因为第一行最后有一个换行符,也占一个字符
f.close()

#2.2 readlines()
# readlines可以按照行的方式把整个文件中的内容进行一次性读取,
# 并且返回的是一个列表,其中每一行的数据为一个元素
# readlines() 方法用于读取所有行(直到结束符 EOF)并返回列表,该列表可以由 Python 的 for... in ... 结构进行处理。
# 如果碰到结束符 EOF 则返回空字符串。
f = open('1.txt', 'r')
#print(f.readlines()) #输出 ['aaa33\n', '111222\n', '22eeee\n', '33\n', '4\n', '5cvxdsd']
f.close()

#2.3 readline()
# 一次读取一行内容
# 方法用于从文件读取整行,包括 "\n" 字符。如果指定了一个非负数的参数,则返回指定大小的字节数,包括 "\n" 字符。
# fileObject.readline(size)
# size -- 从文件中读取的字节数
# 返回值 : 返回从字符串中读取的字节数

f = open('1.txt', 'r')
print(f.readline())
print(f.readline())
print(f.readline())
print(f.readline())

f.close()
import os
file_list = os.listdir()
print(file_list)
#标志位,1 -> 给文件添加 'Python_'
#       2 -> 删除 'Python_'
flag = 2
for i in file_list:
    print(type(i))
for i in file_list:
    if 1 == flag:
        new_name = 'Python_' + i
        os.rename(i, new_name)
    elif 2 == flag:
        pos = len('Python_')
        new_name = i[pos:]
        os.rename(i, new_name)
#文件备份
#获取要备份的文件名
old_name = input('请输入要备份的文件名:')
index = old_name.rfind('.')
if index <= 0:
    print('文件名错误')
    exit(0)
#print(old_name[:index])
#print(old_name[index:])
new_name = old_name[:index] + '[备份]' + old_name[index:]
#print(new_name)
#打开文件
old_f = open(old_name, 'rb') #以二进制只读方式打开
new_f = open(new_name, 'wb') #以二进制只写的方式打开
#读取文件
while True:
    t_data = old_f.read(1024)
    if len(t_data) == 0:
        break
    new_f.write(t_data)
#关闭文件
old_f.close()
new_f.close()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值