【基础】学习笔记1-python3文件操作

文件操作:打开/关闭、读/写/添加、改变部分内容、复制文件/删除文件/重命名文件

常用可操作的文件类型:.txt,.xlsx,.csv,<文件.docx、.xml、.html未记录>



操作txt文件

打开文件open()

语法open(file, mode=‘r’, buffering=-1, encoding=None, errors=None,newline=None, closefd=True, opener=None)

其中,

    file:包含完整路径的文件名

    mode:文件打开方式

>>常用模式<<

    ‘r’—以只读方式打开文件,默认

    ‘rb’—以二进制格式打开一个文件,用于只读

    ‘w’--打开一个文件,用于写入

    ‘wb’—以二进制格式打开一个文件,用于写入

    ‘a’—打开一个文件,用于追加

    ‘ab’—以二进制格式打开一个文件,用于追加

>>不常用模式<<

    ‘r+’/’w+’/’a+’—打开一个文件用于读写

    ‘rb+’/’wb+’—以二进制格式打开一个文件,用于读写

    ‘ab+’—以二进制格式打开一个文件,用于追加

>>说明<<

    若文件不存在,抛出FileNotFoundError异常

    不清空内容,可以同时读和写入内容

    文件打开时文件指针在文件开头

    若文件不存在,创建新的文件

    先清空文件,指针在文件开头

追加

    若文件存在,文件指针放在文件结尾;若不存在,则创建

    文件打开状态下使用追加模式,文件指针直接从最后写入


encoding:编码方式,默认方式依赖平台。若要设置,可参考codecs模块

默认为GBK,操作txt文本

newline:换行控制

参数有:None,‘\n’,‘\r’,‘\r\n’

默认None,写入所有参数均转换为’\n’


读文件

    使用读文件操作前,需要调用open打开文件

    read([size]) 读文件的所有内容

    readline([size]) 读文件的一行

    readlines ([size] ) 读文件的全部行

    举例:

    fp = 'D:\\python\\book_project\\file\\t.txt'

    with open(fp, 'r') as f1:

       print(f1.read())

    with open(fp, 'r') as f2:

       print(f2.readline())

    with open(fp, 'r') as f3:

    print(f3.readlines())

    运行结果:    

    fefoewqfqtbbvfe

    文字

    飞飞飞

    fefoewqfqtbbvfe

    ['fefoewqfqtbbvfe\n', '文字\n', '飞飞飞']


写文件

write(str) 将字符串写入文件中

默认不加换行符,若换行需手动加

举例:

fp = 'D:\\python\\book_project\\file\\t.txt'

with open(fp, 'w') asf:

    f.write('Hi,little girl'+'\n'+'Hi')

with open(fp, 'r') asf:

print(f.read())

运行结果

Hi,little girl

Hi

writelines(seq) 将序列写入文件中

       将seq的内容全部写到文件中,且seq的内容必须全部为字符串类型

fp = 'D:\\python\\book_project\\file\\t.txt'

with open(fp, 'w') asf:

    seq = '''Hi,little girl

    Hi'''

f.writelines(seq)

with open(fp, 'r') asf:

    print(f.read())

运行结果

Hi,little girl

    Hi


修改txt文件内容

       方法一:字符串替换line.replace(before,after)

       方法二:正则表达式re.sub方法替换


fp.tell() 返回文件操作标记当前的位置


fp.seek(offset[,from]) 文件定位


truncate([size]) 裁剪文件



文本模式为.csv

    需要导入库import csv

reader=csv.reader(f, delimiter=',')

    用来读取数据,reader为生成器,每次读取一行,每行数据为列表格式,可以通过delimiter参数指定分隔符

writer=csv.writer(f)

    用来写入数据,按行写入,writer支持writerow(列表)单行写入,和writerows(嵌套列表)批量写入多行,无须手动保存。

标题行

    当文件中有标题行时,可以使用header=next(reader)先获取到第一行的数据,再进行遍历所有的数据行。

    写入时,可以先使用writer.writerow(标题行列表),写入标题行,再使用writer.writerows(多行数据嵌套列表),写入多行数据(也可以逐行写入)。

举例

importcsv


# ===========读文件===========

with open('t.csv', 'r') as csvfile:  # 打开当前目录下的t.csv文件

    # print(csv.reader(csvfile)) #得到是一个地址

    for row in csv.reader(csvfile):  # 分行打印

        print(row)


# ===========写文件===========

with open('t.csv', 'w') ascsvfile:

    temp = csv.writer(csvfile)  # 定义一个写变量

    temp.writerow(['index', 'yanghui', '19'])  # 写入单行,多行使用writerows


with open('t.csv', 'r') as csvfile:  # 读取修改后的内容

    for row incsv.reader(csvfile):

        print(row)

说明:

    写入csv文件——若文件不存在,则新建;写入的内容完全覆盖原内容;可单行或者多行写入;进行内容写入操作前,需要定义一个写变量

    读csv文件——csv.reader(file)得到的是一个地址,打印内容可使用for循环访问



文本模式为.xlsx

以xlrd/xlwt为例,如下:<仅涉及读和写>

import xlwt  # 只能写不能读

import xlrd  # 只能读不能写


# =======新建、写入xls文件=====

data = [['姓名', '年龄', '性别', '分数'],

        ['mary', 20, '女', 89.9],

        ['mary', 20, '女', 89.9],

        ['mary', 20, '女', 89.9],

        ['mary', 20, '女', 89.9]

]

workbook = xlwt.Workbook()  # 新建excel文件

sheet = workbook.add_sheet('test')  # 新建sheet页

row = 0  # 行

for i indata:

    col = 0  # 列

    for j ini:

        sheet.write(row, col, j)  # 在对应的行列中写入内容

        col += 1

    row += 1

workbook.save('t1.xls')  # 保存到当前目录


# =======读xls文件=====

books = xlrd.open_workbook('t1.xls')

sheet = books.sheet_by_index(0)  # 指定行和列获取数据

for i in sheet.get_rows():  # 打印所有行数据

    print(i)

print(sheet.row_values(0))  # 打印第一行信息

print(sheet.col_values(1))  # 打印第二列信息




文件对象

    file.closed 文件关闭,返回True;反之,返回False

    file.mode 返回打开文件的访问模式

    file.name 返回文件名称


文件上下管理

    with…as…

    所有程序执行完后会自动关闭。用于关闭文件、释放缓存、断开数据库链接等。且能优化代码

    在文件操作中使用,文件会自动关闭,不需要增加f.close()

    举例:

fp = 'D:\\python\\book_project\\file\\t.txt'

with open(fp, 'rb') as f:

    print(f.read())


复制文件

    shutil.copyfile(file1,file2) 将file1文件内容复制到file2中,需要导入import shutil

复制操作前,需要将两文件关闭

举例

importshutil

fp_txt = 'D:\\python\\book_project\\file\\t.txt'

fp_py = 'D:\\python\\book_project\\file\\f-2.py'


shutil.copyfile(fp_txt, fp_py)

<可以进行相同文件类型复制,也可以进行不同文件类型复制。但有时,不同文件类型间复制后,可能会因格式不同而出现文件损坏或者乱码的情况>


删除文件

使用os.remove(file)删除文件

使用os.path.exist(file)来判断文件删除情况

<需导入import os,且file为带绝对路径的文件名>


文件重命名

使用os.rename(name_b,name_f)

其中,name_b为原文件名,name_f为修改后的名字

你可能感兴趣的:(【基础】学习笔记1-python3文件操作)