python_fullstack基础(四)-文件操作

来源:互联网 发布:hive 数据倾斜 编辑:程序博客网 时间:2024/05/19 12:37

文件操作

我们用python或其他语言编写的应用程序若想要把数据永久保存下来,必须要保存于硬盘中,这就涉及到应用程序要操作硬件,众所周知,应用程序是无法直接操作硬件的,这就用到了操作系统。操作系统把复杂的硬件操作封装成简单的接口给用户/应用程序使用,其中文件就是操作系统提供给应用程序来操作硬盘虚拟概念,用户或应用程序通过操作文件,可以将自己的数据永久保存下来。

一、打开文件

1、文件句柄方式

# 1. 打开文件,得到文件句柄并赋值给一个变量f = open('target_file.txt', mode='r', encoding='utf-8')# 2. 通过句柄对文件进行操作content = f.read()# 3.输出读取到的结果print(content)# 4. 关闭文件f.close()>>> 文件中的内容:>>> python>>> java

2、上下文方式

# 1. with关键字引导上下文方式打开文件,并将句柄赋予别名fwith open('target_file.txt', mode='r', encoding='utf-8') as f:# 2. 通过句柄对文件进行操作    content = f.read()# 3.输出读取到的结果,用with上下文方式对文件进行操作会在结束操作时默认关闭文件,不必要主动close()    print(content)

二、操作文件

Character Meaning ‘r’ open for reading (default) ‘w’ open for writing, truncating the file first ‘a’ open for writing, appending to the end of the file if it exists ‘b’ binary mode ‘t’ text mode (default) ‘+’ open a disk file for updating (reading and writing) ‘U’ universal newline mode (for backwards compatibility; should not be used in new code)

1、读

# 此处target_file.txt文件中原始内容为:人生苦短,我用python# ①r——只读,不存在报错with open('target_file.txt', mode='r', encoding='utf-8') as f:    content = f.read()    print(content)>>> 人生苦短,我用python# ②rb——以bytes类型读with open('target_file.txt', mode='rb') as f:    content = f.read()    print(content)>>> b'\xe4\xba\xba\xe7\x94\x9f\xe8\x8b\xa6\xe7\x9f\xad\xef\xbc\x8c\xe6\x88\x91\xe7\x94\xa8python'# ③r+——读写,不存在不会创建,写会覆盖之前内容with open('target_file.txt', mode='r+',encoding='utf-8') as f:    content = f.read()    f.write('\n新添加:Life is short , I use python')    print(content)>>> 人生苦短,我用python# ④target_file.txt中的内容为:>>> 人生苦短,我用python>>> 新添加:Life is short , I use python# ⑤r+b——以bytes类型读写with open('target_file.txt', mode='r+b') as f:    content = f.read()    f.write('\n新添加:Life is short , I use python'.encode('utf-8'))    print(content)>>> b'\xe4\xba\xba\xe7\x94\x9f\xe8\x8b\xa6\xe7\x9f\xad\xef\xbc\x8c\xe6\x88\x91\xe7\x94\xa8python'# target_file.txt中的内容为:>>> 人生苦短,我用python>>> 新添加:Life is short , I use python

2、写

# 此处target_file.txt文件中原始内容为空,需要向其中写入:人生苦短,我用python# ①w——只写,不存在则创建,存在则清空再写with open('target_file.txt', mode='w', encoding='utf-8') as f:    content = f.write('人生苦短,我用python')# target_file.txt中的内容为:>>> 人生苦短,我用python# ②x——只写,不存在则创建,存在则报错with open('target_file.txt', mode='x', encoding='utf-8') as f:    content = f.write('人生苦短,我用python')# target_file.txt存在:>>> Traceback (most recent call last):>>>    File "D:/python_fullstack_s9/day8/practice.py", line 94, in <module>>>>      with open('target_file.txt', mode='x', encoding='utf-8') as f:>>>  FileExistsError: [Errno 17] File exists: 'target_file.txt'# target_file.txt不存在:>>> 人生苦短,我用python# # ③wb——以bytes类型写with open('target_file.txt', mode='wb') as f:    content = f.write('人生苦短,我用python'.encode('utf-8'))>>> 人生苦短,我用python# # ④w+——写读,不存在则创建,写会覆盖之前的内容with open('target_file.txt', mode='w+') as f:    content = f.write('hello,world')    date = f.read()    print(date)>>># target_file.txt中的内容为:>>> hello,world# # ⑤w+b——以bytes类型写读with open('target_file.txt', mode='w+b') as f:    content = f.write('hello,world'.encode('utf-8'))    date = f.read()    print(date)>>> b''# target_file.txt中的内容为:>>> hello,world

3、追加

# 此处target_file.txt文件中原始内容为:人生苦短,我用python,需要在后面添加'谁用谁知道'内容# ①a——追加,不存在则创建,存在则追加with open('target_file.txt', mode='a', encoding='utf-8') as f:    content = f.write('谁用谁知道')target_file.txt中的内容为:>>> 人生苦短,我用python谁用谁知道# ②ab——以bytes类型追加with open('target_file.txt', mode='ab') as f:    content = f.write('谁用谁知道'.encode('utf-8'))>>> 人生苦短,我用python谁用谁知道# ③a+——可读可写,不存在则创建,写则追加with open('target_file.txt', mode='a+',encoding='utf-8') as f:    content = f.write('谁用谁知道')    f.seek(0)    date = f.read()    print(date)>>> 人生苦短,我用python谁用谁知道# ④a+b——以bytes类型可读可写with open('target_file.txt', mode='a+b') as f:    content = f.write('谁用谁知道'.encode('utf-8'))    f.seek(0)    date = f.read()    print(date)>>> b'\xe4\xba\xba\xe7\x94\x9f\xe8\x8b\xa6\xe7\x9f\xad\xef\xbc\x8c\xe6\x88\x91\xe7\x94\xa8python\xe8\xb0\x81\xe7\x94\xa8\xe8\xb0\x81\xe7\x9f\xa5\xe9\x81\x93'# target_file.txt中的内容为:>>> 人生苦短,我用python谁用谁知道

4、其他操作

① seek() 移动光标指针位置

seek有三种移动方式0,1,2,其中1和2必须在b模式下进行,但无论哪种模式,都是以bytes为单位移动的

② tell() 返回当前指针所在的位置

tell对于英文字符就是占一个,中文字符占三个,参数表示的是字节数区分与read()的不同.

③ truncate() 截断文件

truncate是截断文件,所以文件的打开方式必须可写,但是不能用w或w+等方式打开,因为那样直接清空文件了,所以truncate要在r+或a或a+等模式下测试效果

④ readline() 读取一行

⑤ readlines() 读取多行,返回为列表

⑥ readable() 文件是否可读

⑦ writeline() 写入一行

⑧ writelines() 写入多行

⑨ writable() 文件是否可读

⑩ closed() 文件是否关闭

⑪ encoding=’utf-8’ 如果文件打开模式为b,则没有该属性

⑫ flush() 立刻将文件内容从内存刷到硬盘

⑬ for循环文件句柄

with open('target_file.txt', mode='r',encoding='utf-8') as f:    for i in f:        print(i)>>> 人生苦短,我用python>>> 谁用谁知道
阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 东城渐觉风光好 北京市东城区邮政编码 东莞东城下桥多鸡 北京东城区房价 东城风情步行街 东城中医院专家出诊表 青山横北郭白水绕东城 东埔 东埔寨 东埔二 东埔寮 东埔农场 东埔二村 东埔街道 东埔三村 东埔海景花园 东埔后 东埔前 东堤公园 东堤横街 东堤湾畔 东堤花园酒店 东利橡塑 东塔 东塘 东心塘 东塘宾馆 东塘 酒店 上东塘 下东塘 东塘街道 东下塘 塾怎么读 塾组词 塾拼音 书塾拼音 书塾的拼音 庆应义塾大学 塾的拼音 书塾