一、文件内容读取
1、读取文件内容
pi_digits.txt文件内容如下:
3.14159526
55566656
44568965
通过python文件处理读取文件内容:
with open('D:\pythontest\pi_digits.txt') as f:
contents = f.read()
print(contents)
输出:
3.14159526
55566656
44568965
输出打印有一行空行,在print语句中使用rstrip()
with open('D:\pythontest\pi_digits.txt') as f:
contents = f.read()
print(contents.rstrip())
末尾输出不带空行
2、文件路径
open中的文件路径可以是绝对路径或者相对路径
绝对路径类似于‘D:\pythontest\pi_digits.txt’
相对路径如该python脚本就在pythontest目录下,则路径可以直接写成‘pi_digits.txt’ 与python脚本处于同级目录
也可以将绝对路径存储在一个变量之中,再将该变量传给open(),如:
objfile = 'D:\pythontest\pi_digits.txt'
with open(objfile) as f:
contents = f.read()
print(contents.rstrip())
输出
3.14159526
55566656
44568965
3、逐行读取,存在需要遍历文件,并匹配其中某行的需求
objfile = 'D:\pythontest\pi_digits.txt'
with open(objfile) as f:
for line in f:
print(line)
输出
3.14159526
55566656
44568965
由于文件每行末尾有一个看不见的换行符,因此print打印的时候一并打印了换行符,同上一节相同,使用rstrip()来去除,后续将直接带。
objfile = 'D:\pythontest\pi_digits.txt'
with open(objfile) as f:
for line in f:
print(line.rstrip())
输出
3.14159526
55566656
44568965
如需要输出匹配的行,可以在其中再增加条件语句并输出
遍历文件寻找文件中是否包含了3.14159526这行,并充分说明了这行末尾时带了一个换行符的,如果在条件中不加’\n’,将匹配不到任意一行。
objfile = 'D:\pythontest\pi_digits.txt'
with open(objfile) as f:
for line in f:
if line == '3.14159526\n':
print(line.rstrip())
else:
print("none")
输出
3.14159526
none
none
4、创建一个包含文件各行内容的列表
objfile = 'D:\pythontest\pi_digits.txt'
with open(objfile) as f:
lines = f.readlines() #readlines()方法,从文件中读取每一行,并将其存在一个列表中,将该列表存储到lines变量中
for line in lines:
print(line.rstrip())
输出
3.14159526
55566656
44568965
5、使用文件的内容
创建一个空字符串,将
objfile = 'D:\pythontest\pi_digits.txt'
with open(objfile) as f:
lines = f.readlines() #readlines()方法,从文件中读取每一行,并将其存在一个列表中,将该列表存储到lines变量中
pi_str = ''
for line in lines:
pi_str += line.rstrip()
print(pi_str)
print(len(pi_str))
输出
3.14159526 55566656 44568965
30
可以使用strip()函数代替rstrip()函数,去除空格
objfile = 'D:\pythontest\pi_digits.txt'
with open(objfile) as f:
lines = f.readlines() #readlines()方法,从文件中读取每一行,并将其存在一个列表中,将该列表存储到lines变量中
pi_str = ''
for line in lines:
pi_str += line.strip() #strip()代替rstrip()
print(pi_str)
print(len(pi_str))
输出
3.141595265556665644568965
26
6、你的生日是否在圆周率内,第3节的变化,判断字符串是否在整个字符串内
objfile = 'D:\pythontest\pi_digits.txt'
with open(objfile) as f:
lines = f.readlines() #readlines()方法,从文件中读取每一行,并将其存在一个列表中,将该列表存储到lines变量中
pi_str = ''
for line in lines:
pi_str += line.strip() #strip()代替rstrip()
birthday = input("你的生日是:")
if birthday in pi_str:
print("你的生日在圆周率")
else:
print("你的生日不在")
print(pi_str)
print(len(pi_str))
输出
你的生日是:1415
你的生日在圆周率
3.141595265556665644568965
26
二、文件内容写入
1、写入空文件
写入‘i love NJ!’到新文件test1.txt中,如未指定位置,将保存在当前目录下。
调用open()时提供了两个实参,第一个实参时要打开的文件的名称,第二个实参‘w’告诉python我们要以写入模式打开文件。打开文件时,可以指定读取模式‘r’、写入模式’w’、附加模式’a’或让你能够读取和写入文件的模式‘r+’,如果省略,默认只读模式。
filename = 'test1.txt'
with open(filename, 'w') as f:
f.write("i love NJ!")
输出内容
i love NJ!
如果文件不存在,open会创建该文件,如果该文件已存在,覆盖原有内容。
2、附加到文件
如果想要给文件附加内容,而不是覆盖原有内容,使用附加模式’a’打开文件。
filename = 'test1.txt'
with open(filename, 'a') as f: #'a'附加模式
f.write("i love BJ!")
i love NJ!i love BJ!
如果想要分行,需要添加’\n‘换行符