1、注意
1、文件必须先打开才能读写
2、对文件读写完成后,应及时关闭文件以释放系统资源
2、文件的打开(open()函数)和关闭(close()函数)
1、打开文件
变量名/对象名f = open("文件名","打开方式")
打开方式:
'r' : 读
'w' : 写
'a' : 追加(只能写)append
2、关闭文件
f.close() 关闭文件,释放系统资源
3、示例
f = open("python.txt",'r')
print("文件python.txt已打开")
f.close()
print("文件python.txt已关闭")
4、常用方法
data = f.readline() 读取一行内容
print(data)
data2 = f.readlines() 返回每行字符串的列表
print(data2)
f.write("字符串") 将字符串类型的数据写入到文件中
f.write("hello tarena\n")
f.writelines(列表) 将列表类型的数据写入到文件中
f.writelines(['hello\n','world\n'])
5、注意
1、readline()和readlines()需要变量名来接收读取出来的数据
2、readline()读取出阿里的为字符串格式,readlines()读取出来的是列表格式
3、writelines(列表)在文件中写入数据,()中必须要给一个列表
6、练习
1、在用户主目录下创建文件myfile.txt,并写入如下内容:
金毛狮王 屠龙刀
灭绝师太 倚天剑
乔峰 降龙十八掌
# f = open("/home/tarena/myfile.txt","w")
# L = ["金毛狮王 屠龙刀\n","灭绝师太 倚天剑\n",
# "乔峰 降龙十八掌\n"]
# f.writelines(L)
# f.close()
提示:用for循环遍历列表中元素
# f = open("/home/tarena/myfile.txt",'r')
# data = f.readlines()
# for i in data:
# print(i,end="")
# f.close()
3、在文件末尾追加如下内容:
袁 自带音响
强 绿光
亮 绿光
# f = open("/home/tarena/myfile.txt",'a')
# data = ["袁 自带音响\n","强 绿光\n"]
# f.writelines(data)
# f.close()
4、写一个程序,来实现cp文件功能(复制myfile.txt为myfile2.txt)
提示:先读出来(readline,realines)
再写入myfile2.txt中
f1 = open(...)
...
f1.close()
f2 = open(...)
...
f2.close()
# f1 = open("/home/tarena/myfile.txt",'r')
# L = []
# while True:
# data = f1.readline()
# if len(data) == 0:
# break
# L.append(data)
# f1.close()
# f2 = open("/home/tarena/myfile3.txt",'w')
# f2.writelines(L)
# f2.close()
1、定义
函数是可以重复执行的代码块,可以重复使用
2、语法
def 函数名(参数列表):
语句块....
3、调用
函数名(参数列表)
4、示例
1、定义一个函数star,调用时输出20个 *
# def star(n):
# print("*" * n)
# star(1)
# star(3)
# star(5)
# star(7)
# star(9)
# star(20)
2 4 6 8 10 ... n的所有偶数(用for和while两种方法)
def oushu(n):
... ...
# def oushu(n):
# for i in range(2,n+1,2):
# print(i,end=" ")
# print()
# # while循环
# def oushu2(n):
# i = 2
# while i <= n:
# print(i,end=" ")
# i += 2
# print()
# oushu(29)
# oushu2(29)
3、定义一个函数mysum(n),打印1+2+3+...+n的和
# def mysum(n):
# i = 1
# s = 0
# while i <= n:
# s += i
# i += 1
# print("和为:%d" % s)
# mysum(5)
# mysum(10)
1、语法
return 值
2、如果函数中没有return语句,则会默认添加 return None
3、练习
1、写一个函数,来获取两个整数中的最大值
# def mymax(m,n):
# if m > n:
# return m # 只要遇到了return语句则函数结束
# return n
# print(mymax(66,88))
2、写一个函数,来获取三个整数中的最大值
# def mymax2(m,n,k):
# if m > n and m > k:
# return m
# elif n > m and n > k:
# return n
# return k
# print(mymax2(5,50,10))
# def mymax3(a,b,c):
# maxn = a
# if b > maxn:
# maxn = b
# if c > maxn:
# maxn = c
# return maxn
# print(mymax2(5,50,10))
import random
import string
def randompass(n=8):
all_chars = string.digits + string.ascii_letters + "_"
...
return ...
验证:
print(randompass())
print(randompass(6))
# import random
# import string
# def randompass(n=8):
# all_chars = string.ascii_letters + \
# string.digits + "_"
# pwd = ""
# for i in range(n): # 只是控制循环次数,i可用可不用
# char = random.choice(all_chars)
# pwd += char
# return pwd
# def r():
# print(randompass())
# print(randompass(6))
(1)剪刀
(q)退出
请选择:Q
if choice.strip().lower() == "q":
break
4、编写一个函数来实现文件复制功能
def copyfile(srcf,dstf):
f1 = open(...)
f2 = open(...)
读取f1写入f2
copyfile("/home/tarena/myfile.txt","/home/tarena/AID1803/myfile2.txt")
# def copyfile(srcf,dstf):
# f1 = open(srcf,'r')
# f2 = open(dstf,'w')
# L = []
# while True:
# data = f1.readline()
# if len(data) == 0:
# break
# L.append(data)
# f2.writelines(L)
# f1.close()
# f2.close()
# # copyfile("/home/tarena/myfile.txt",
# # "/home/tarena/AID1803/myfile2.txt")
# copyfile("/home/tarena/AID1803/myfile2.txt",
# "/home/tarena/AAA.txt")
作业:
1、利用函数形式实现创建文件并直接在文件中写入内容
函数调用开始:
>>>第一行内容
>>>第二行内容
>>>...
>>>q
获取终端输入的内容
def get_contents():
L = []
while True:
... input...
...
将内容写入文件
def mkfile(fname,contents):
...open...
... ...
验证:
contents = get_contents()
mkfile("文件名",contents)
# def get_contents():
# L = []
# while True:
# line = input(">>> ")
# if line == "quit":
# break
# L.append(line + "\n")
# return L
# def mkfile(fname,contents):
# f = open(fname,'w')
# f.writelines(contents)
# f.close()
# contents = get_contents()
# mkfile("/home/tarena/好诗.txt",contents)