赞
踩
目录
读取文件主要用到两个方式,即:
with open('文件名') as file_object:
contents = file_object.read()
#表示逐行读取
for line in file_object:
print (line)
open方法直接打开并读取文件,不使用with语句,此方法直接读取文件,但是要记得关闭文件,我们要知道,我们操作的是什么,目的是什么,如果我们只是单纯的读取文件的内容,而不去修改它,那么就单纯使用open()方法,不用第二参数即可。函数open()接受一个参数:要打开文件的名称。
f = open('poem.txt') # 读取整个文件 contents = f.read() print(contents) #组行读取 for line in f: print(line.strip()) # 读取文件内容到一个列表中 lines = file_object.readlines() print(lines) f.close()
在读取文件过程中涉及到文件路径,这里会提到相对路径和绝对路径。
如果被读取的文件在当前执行文件所在的目录中,就可以直接with open(‘文件名’),但是如果不在被执行文件夹下,就要涉及到相对复杂一点的路径读取。
根据文件的组织方式,有时可能要打开不在程序文件所属目录中的文件。例如,可能将程序文件存储在了文件夹Python_work中,而在文件夹Python_work中存在子文件夹text_file,其用于存储程序文件操作的文本文件。尽管文件夹Python_work中包含text_file文件,仅向open()传递位于该文件夹中的文件的名称不可以,源于Python只在文件夹Python_work中查找,而不胡在其子文件夹text_file中查找。这需要提供具体文件路径,应该标出相对路径:
with open('text_files\filename.txt') as file_object:
值得注意的是:在Windows系统中,在文件路径中使用反斜杠(\)而不是斜杠(/)。
如果相对路径走不通,那就使用绝对路径,如下:
file_path = 'C:\users\ehmidhih\other_files\text_file\filename.txt'
with open(file_path) as file_oject:
常常在读取文件时,会将read(),readline(),readlines()搞混,现对这三个方法做个总结:
#这是一个文本文件,命名为l.txt
if you have a dream
please try to do it
because dream is lovely
#read()方法
f = open("a.txt")
lines = f.read()
print(lines)
print(type(lines))
f.close()
输出结果为:
if you have a dream
please try to do it
because dream is lovely
<class 'str'>
小例子:
f = open('1.txt','r')
result = list()
for line in open('1.txt'):
line = f.readline()
print(line)
result.append(line)
print(result)
f.close()
输出结果:
D:\anaconda\python.exe D:/pyworkspace/11/2018.12.17/lianxi0/0.2.py
if you have a dream
please try to do it
because dream is lovely
['if you have a dream\n', 'please try to do it\n', 'because dream is lovely']
Process finished with exit code 0
运行代码:
f = open('1.txt', 'r') #以读方式打开文件
result = list()
for line in f.readlines(): #依次读取每行
line = line.strip() #去掉每行头尾空白
if not len(line) or line.startswith('#'): #判断是否是空行或注释行
continue #是的话,跳过不处理
result.append(line) #保存
result.sort() #排序结果
print(result)
运行结果:
D:\anaconda\python.exe D:/pyworkspace/11/2018.12.17/lianxi0/0.2.py
['because dream is lovely', 'if you have a dream', 'please try to do it']
下面对读写模式进行小结:
r | 只能读 |
r+ | 可读可写,不会创建不存在的文件,从顶部开始写,会覆盖之前此位置的内容 |
w | 只能写,覆盖整个原有文件(不要乱用),不存在则创建 |
w+ | 可读可写,如果文件存在,则覆盖整个文件,不存在则创建 |
a | 只能写,从文件底部添加内容 不存在则创建 |
a+ | 可读可写 从文件顶部读取内容 从文件底部添加内容 不存在则创建 |
简单举个例子:
#W模式
filename = '1.txt'
with open (filename,'w') as file_object :
file_object.write("i love you \n")
file_object.write("thank you \n") # 加上\n可以一行一行的加入
#a模式
filename = '1.txt'
with open (filename,'a') as file_object :
file_object.write(" you are cute \n")
file_object.write("i love you \n") # 加上\n可以一行一行的加入
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。