【基础】学习笔记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 <csv为python3自带的库>

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为修改后的名字

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容