文件
在工作的使用工程中,可能会使用到不同的文件类型如:png,txt等。因为计算机本身存储内容的形式是翻译为0和1,但是因为文件类型和编码格式的不同使用的编码语言也不同。所以在程序中调用文件的时候需要注意对应的编码格式,一般为UTF-8。
文件使用三步走:打开——使用(读/写)——关闭
f = open("/Users/xxx/Downloads/test","w") #打开文件
f.write("你好啊啊啊啊") #写入内容
f.close() #关闭文件
(在写入和读取的时候会占用文件,记得写完要释放文件的占用)
文件打开
可以使用open函数来打开文件
文件对象 = open(文件名,模式,解码格式)
文件对象:因为python是面向对象编程,这里文件可以默认写f
文件名:只写文件名默认和代码文件同一层级,如果不是同一层级需要写文件地址。
p.s. MAC的文件地址:点击文件-右键显示简介-在"位置"上右键拷贝文件路径
模式:文件的使用模式:只读、写入和追加模式,对应缩写:r,w,a。
写入为清空后覆盖,追加则是在原有内容后面进行写入。如果文件不存在,则创建新文件。
f = open("/Users/xxx/Downloads/test","r",encoding="UTF-8")
下面是打开函数对应的全部位置及对应内容:
file_object = open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
- buffering:(看完文件写入再来看这里)设置缓冲策略。默认值为`-1`,表示使用系统默认的缓冲策略。如果设置为`0`,表示不缓冲;如果设置为`1`,表示行缓冲(只用于文本模式);如果设置为一个大于`1`的整数,表示使用指定大小的缓冲区。个人理解这里就是避免频繁的内存所以可以选择是每次都写入,还是攒一起写入,大概根据需求选择就好了。
- errors: 如何处理编码和解码错误。常见的值包括`'strict'`,
'ignore'
,'replace'
等。 - newline:控制换行符的行为。可能的值有`None`,
''
,'\n'
,'\r'
, 和`'\r\n'`。通常用于跨平台处理文件的换行符。 - closefd:如果打开的是一个文件而不是文件描述符,这个参数应当为`True`(默认值),否则为`False`。
- opener:自定义开启文件的函数或打开文件描述符的函数。
文件读取
文件读取有三种方式,对应不同的使用姿势。
- f.read(字节数):读取对应的字节数,括号里的字节数不写默认读全部。
- f.readlines():一次性读取所有行,并保存为列表。
- f.readline:一次性读取一行。
读取模式有一个弊端是,在read状态会记住读取的顺序,下次在已读取后面接着读取。
content = f.read()
文件写入
f.write(""):将内容暂存写入。
f.flush():内容刷新,将内容实际写入到文件中,会占用内容进行读写操作。
因为将文件进行写入是会消耗内存的,在降低消耗的基础上,可以选择write完一部分后,在进行flush,避免频繁写入浪费内存。另外再python中,调用close内置flush一下,所以可以使用习惯灵活运用。
p.s.如果要用写入模式,打开文件时的模式记得要写对啊!
文件关闭
f.close()
如果你怕忘了,在Python中,with
语句可以自动管理文件的打开和关闭。使用with open
结构处理文件,并且能够自动关闭文件。
def process_file(filename, mode):
with open(filename, mode) as file:
# 在这里处理文件,比如读取或写入内容
content = file.read()
# 处理完毕后文件会自动关闭
return content