Python学习Day8—文件基本操作

打开文件

    #’filename.txt‘处指定文件路径,可以使用绝对路径和相对路径
    #mode=‘w‘指定文件的打开方式
    #encoding=‘utf-8‘指定文件编码
f = open(‘filename.txt‘,mode=‘w‘,encoding=‘utf-8‘)

f.close() #关闭文件,使用上面句柄打开文件后,文件会一直在内存中运行,在对文件进行操作后,应记得关闭文件

---------------------------------------------------------------------------
#使用with关键字+open打开文件后,不用再使用close对文件进行关闭,并且可以同时打开多个文件,打开多个文件需要用逗号隔开,最后的句柄名称后需要加冒号
with open(‘filename.txt‘,mode=‘w‘,encoding=‘utf-8‘) as f:#打开一个文件
with open(‘filename.txt‘,mode=‘w‘,encoding=‘utf-8‘) as f,with open(‘filename.txt‘,mode=‘w‘,encoding=‘utf-8‘) as f1:#打开多个文件

操作文件

1.读

# 此处filename.txt文件中原始内容为:人生苦短,我用python
# ①r——只读,不存在报错
with open(‘filename.txt‘, mode=‘r‘, encoding=‘utf-8‘) as f:
    content = f.read()
    print(content)
>>> 人生苦短,我用python

# ②rb——以bytes类型读
with open(‘filename.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(‘filename.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(‘filename.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.写

# 此处filename.txt文件中原始内容为空,需要向其中写入:人生苦短,我用python
# ①w——只写,不存在则创建,存在则清空再写
with open(‘filename.txt‘, mode=‘w‘, encoding=‘utf-8‘) as f:
    content = f.write(‘人生苦短,我用python‘)
# target_file.txt中的内容为:
>>> 人生苦短,我用python

# ②x——只写,不存在则创建,存在则报错
with open(‘filename.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‘
# filename.txt不存在:
>>> 人生苦短,我用python

# # ③wb——以bytes类型写
with open(‘filename.txt‘, mode=‘wb‘) as f:
    content = f.write(‘人生苦短,我用python‘.encode(‘utf-8‘))
>>> 人生苦短,我用python

# # ④w+——写读,不存在则创建,写会覆盖之前的内容
with open(‘filename.txt‘, mode=‘w+‘) as f:
    content = f.write(‘hello,world‘)
    date = f.read()
    print(date)
>>>
# filename.txt中的内容为:
>>> hello,world

# # ⑤w+b——以bytes类型写读
with open(‘filename.txt‘, mode=‘w+b‘) as f:
    content = f.write(‘hello,world‘.encode(‘utf-8‘))
    date = f.read()
    print(date)
>>> b‘‘
# filename.txt中的内容为:
>>> hello,world

3.追加

# 此处filename.txt文件中原始内容为:人生苦短,我用python,需要在后面添加‘谁用谁知道‘内容
# ①a——追加,不存在则创建,存在则追加
with open(‘filename.txt‘, mode=‘a‘, encoding=‘utf-8‘) as f:
    content = f.write(‘谁用谁知道‘)
filename.txt中的内容为:
>>> 人生苦短,我用python谁用谁知道

# ②ab——以bytes类型追加
with open(‘filename.txt‘, mode=‘ab‘) as f:
    content = f.write(‘谁用谁知道‘.encode(‘utf-8‘))
>>> 人生苦短,我用python谁用谁知道

# ③a+——可读可写,不存在则创建,写则追加
with open(‘filename.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(‘filename.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‘
# filename.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(‘filename.txt‘, mode=‘r‘,encoding=‘utf-8‘) as f:
    for i in f:
        print(i)
>>> 人生苦短,我用python
>>> 谁用谁知道

原文地址:https://www.cnblogs.com/NeroCl/p/8118155.html

时间: 2024-10-18 02:27:54

Python学习Day8—文件基本操作的相关文章

python学习笔记-文件基本操作(二)

在上一篇文章中,简单介绍了打开文件的方法以及关于读.写.追加的操作,点击此处查看. 在此篇文章中,继续介绍另外一种打开文件的方法和几种同时读写的模式. 一.打开文件方法:with 使用file()或open()打开文件时,最后一定要使用close()方法来关闭文件,为了避免忘记使用,还使用使用with的方法开打开文件,代码如: with open ('文件名','模式') as f: ... 其中,f为文件句柄,该打开文件的方式等同于f=open('文件名','模式') 此方法也可以一次打开多个

python学习之-文件和对象

文件和对象文件对象不仅可以用来访问普通的磁盘文件,还能够来访问普通的磁盘文件,也可以访问任何其他类型抽象层面的"文件".内建函数 open() 返回一个文件对象,对该文件进行后续相关的操作都要用到它.文件内建函数 open() 以及 file() 提供了初始化输入/输出(I/O)操作的通用接口.open() 内建函数成功打开文件后会返回一个文件对象,否则引发一个错误.当操作失败,会产生一个IOERROR异常.内建函数 open() 的基本语法:file_object = open(fi

Python学习_06_文件、IO

文件对象 python中的文件操作和c语言比较类似,包括一些缓冲.偏移量的方式. 文件对象可以通过open().file()两个内建方法创建,两个方法并没有什么不同,使用方法和c语言中的fopen()类似: file_object = open(file_name, access_mode='r', buffering=-1) 其中access_mode表示打开方式,r表示只读,w表示只写,r+,w+表示读写,a表示追加等:buffering表示缓冲方式,负值表示默认缓冲方式,0表示不缓冲,1表

Python学习之--文件操作

Python中对文件操作可以用内置的open()函数 读文件 f=open('/home/test/test.txt','r') # 读模式打开文件 f.read() # 读取文件内容 除了正常的读取文件内容,一个常用的操作是判断文件内容是否为空,如下: if len(f.read())==0: # 如果文件内容为空 xxxx 判断一个文件或者路径是否存在,如下(这里需要在代码中导入os module: import os): file='/home/test/test.txt' dir='/h

PYTHON学习之文件操作;

文件内容替换for line in flielinput.input("filepath",inplace=1):line = line.repace("oldtext","newtext")print line, python中对文件.文件夹(文件操作函数)的操作需要涉及到OS模块和shutil模块.1.得到当前工作目录,即当前PYTHON脚本工作的目录路径:os.getcwd()2.返回指定目录下的所有文件和目录名:os.listdir()3

python学习——大文件分割与合并

在平常的生活中,我们会遇到下面这样的情况: 你下载了一个比较大型的游戏(假设有10G),现在想跟你的同学一起玩,你需要把这个游戏拷贝给他. 然后现在有一个问题是文件太大(我们不考虑你有移动硬盘什么的情况),假设现在只有一个2G或4G的优盘,该怎么办呢? 有很多方法,例如winrar压缩的时候分成很多小卷,这里不累述. 在学习python之后,我们自己就可以解决这个问题啦. 我们可以自己写一个脚本去分割合并文件,将文件分割成适合优盘大小的小文件,在拷贝,然后再合并. 下面是文件分割脚本: 1 im

python学习8 文件的操作

本文拷贝了on testing 的<python之文件操作:文件的读写>,只做学习之用 python的文件读写通过 一.用open函数 二.对文件读写操作 三.读取文件位置定位 1. open函数open(file_name[,access_mode][,buffering]) (1)参数说明 open(file_name[,access_mode][,buffering])      打开文件,获得文件的句柄 file_name:包含文件路径的字符串,可以是绝对路径也可以是相对路径,尽量使用

Python学习:文件

内置open()函数会创建一个Python文件对象,可以作为计算机上的一个文件链接.在调用open()之后,可以通过调用返回文件对象的方法来读写相关外部文件. 打开文件: output = open('C:\spam', 'w')       #打开文件,模式为写入 input = open('C:\spam', 'r')        #打开文件,模式为读出 input = open('C:\spam')             #同上,默认为'r' 文件的读操作: aString = f.r

python学习11 -文件,流

打开文件 语法如下:open(name,[module[,buffering]]) ,模式 和缓冲参数都是可选的 f = open(r'C:\TEXT\somefile.txt')#如果文件不存在 Traceback (most recent call last): File "<pyshell#64>", line 1, in <module> f = open(r'C:\TEXT\somefile.txt')IOError: [Errno 2] No suc