ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python入门精讲笔记-06-file

2022-07-12 09:02:59  阅读:164  来源: 互联网

标签:文件 06 读取 python 精讲 read myfile x00 open


06. 文件 file

@(Python入门精讲课程)

[TOC]

一、文件的基本语法

open('文件名',mode)

mode 意义 备注
'r' 只读的方式打开
'w' 写入的方式打开 如果无文件,创建文件。如果有清除文件内容
'a' 追加的方式打开 将内容添加到文件的末尾
'b' 二进制的方式打开
'+' 以可读可写的方式打开 r+w+a+

r':读
'w':写
'a':追加
'r+' == r+w(可读可写,文件若不存在就报错(IOError))
'w+' == w+r(可读可写,文件若不存在就创建)
'a+' ==a+r(可追加可写,文件若不存在就创建)
对应的,如果是二进制文件,就都加一个b就好啦:
'rb'  'wb'  'ab'  'rb+'  'wb+'  'ab+'

with open(r'd:\data.txt', 'r+') as f:
    f.write('现在是2018/8/30的晚上\n无需手动close文件')
    # 写入文件的时候,指针移动到了文件的末尾,需要再移到开头
    f.seek(0)
    print(f.read())

结果:
img

>>> myfile = open(r'd:\test.txt','w')
会在d盘下生成一个test.txt的文件

1.1 写入到文本文件

直接使用open()函数来创建、写入文件

>>> myfile = open(r'd:\test.txt','w')
>>> myfile.write('今天是星期四\n')
7
>>> myfile.write('转义字符使用反斜杠\n')
10
>>> myfile.close()

文件效果如下:
img

1.2 文件的读取使用.read()方法

1.2.1使用文件的.read()的方法,可以读取文件中的所有的内容。

1.2.2但是需要注意的是,read()后的指针会移动到末尾,如果再次读取文件为空

1.2.3文件读取后,记得要close()文件

 >>> myfile = open(r'd:\test.txt','r')
 >>> myfile.read()
'今天在下雨啊\n明天不知道是什么天气\n'
>>> myfile.read()

1.2.4读取文件的一行操作

使用.readline()来读取文件中的一行的内容,一直读到文件的末尾为空

>>> myfile.readline()
'今天在下雨啊\n'
>>> myfile.readline()
'明天不知道是什么天气\n'
>>> myfile.readline()
''

1.2.5读取文件的所有行

readlines()可以读取文件中的所有行,可以将每一行作为一个元素放到list中

>>> myfile.readlines()
['今天在下雨啊\n', '明天不知道是什么天气\n']

1.2.6设置文件操作的编码方式

在文件打开的时候,就设置文件的编码格式,如下encoding='utf-8'或者encoding='utf8'都可以

>>> f = open(r'd:\edit.txt','w',encoding='utf-8')
>>> f.write('今天晚上有些下雨')
8
>>> f.close()

二、使用with open()上下文来实现自动打开关闭file

如果使用open()方法,需要每次手动关闭文件。python提供了另外一种:with open()一旦跳出了覆盖范围,会自动关闭文件

with open(r'd:\data.txt', 'w') as f:
    f.write('现在是2018/8/30的晚上\n无需手动close文件')

with open('d:\data.txt', 'r') as f:
    print(f.read())

img
为什么会有换行??因为print()中的end默认为\n
img

三、二进制文件的操作

2.1使用pickle模块进行二进制文件的读写

二进制的文件的后缀可以任意定义,使用pickle模块可以用于存储和读取数据。

# 使用pickle的.dump()方法写入文件
import pickle

book = dict(title='Python入门学习', price=39.00, author='Tony')
f = open(r'd:\data.hyt', 'wb')
pickle.dump(book, f)
f.close()

# 使用pickle的.load()方法读取文件
# 注意的这里要再次用rb的方式打开文件
f = open(r'd:\data.hyt', 'rb')

# 直接使用read()方法读取试看看
print(f.read(), flush=True)
# 读取完成后将指针放到开头
f.seek(0)

# 使用pickle下的load读取
book_content = pickle.load(f)
print(book_content)

f.close()

运行的结果如下:

b'\x80\x03}q\x00(X\x06\x00\x00\x00authorq\x01X\x04\x00\x00\x00Tonyq\x02X\x05\x00\x00\x00priceq\x03G@C\x80\x00\x00\x00\x00\x00X\x05\x00\x00\x00titleq\x04X\x12\x00\x00\x00Python\xe5\x85\xa5\xe9\x97\xa8\xe5\xad\xa6\xe4\xb9\xa0q\x05u.'
{'author': 'Tony', 'price': 39.0, 'title': 'Python入门学习'}

标签:文件,06,读取,python,精讲,read,myfile,x00,open
来源: https://www.cnblogs.com/spring2022/p/16468718.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有