0
点赞
收藏
分享

微信扫一扫

python基础·学习--day10-文件操作

落花时节又逢君to 2022-04-01 阅读 94
python学习
'''
文件操作,读与写
包含绝对路径:从盘符开始一层一层向下定位到具体文件
相对路径:
   和当前所在脚本位置有关,同级别的不需要添加任何位置设定  ,上级 ..

'''

# import os
# print(os.path.dirname(__file__))  # 输出当前文件的绝对路径

#  文件的打开:
#  语法:
# file = open('test1.txt','r')
# print(file)
# # 如何将文件的内容显示出来

# # read()  --读取文件所有内容
# num1 = file.read(3)   # 括号里的数字表示读取多少个字符,没有数字则全部读取
# print(num1)
# print(type(num1))   # 使用read()读取后是字符类型
# # tell() ---查找文件的读取位置
# print(file.tell())
# num2 = file.read(5)  #如果读取后,继续使用read()进行读取,会直接从上次读取位置继续往后读取
# print(num2)
# print(file.tell())
# # seek(n)----回到指定n的位置
# file.seek(0)
# print(file.tell())
# file.close()  # 使用open方法时,记得关闭

# # readline() --- 一次只读取一行,以字符串形式返回
# file = open('test1.txt','r')
# # file = open(r"D:/Program Files/python/python复习/文件操作.py",'r')
# # # print(file.readline())
# # file.seek(0)
# print(file.readlines())
# file.seek(0)
# # all = file.readlines()
# # list1 = file.read().split('\n')
# # print(list1)
# # all = file.read().strip().split('\n')
# all = file.read().strip().splitlines()  # 自动以行切割
# print(all)
# file.close()

# read() ---如果使用read()全文读取后,指针在末尾


# 写入操作W,如果文件不存在则自动新增,在写入时,一打开的瞬间情况,在进行写入操作,覆盖写入
# str1 = 'my name is \n hanmeimei'
# str2 = '12355\n23424\n345678'
# list1 = ['my name\n','is\n','hanmeimei']
# wfile = open('test2.txt','w')
# # wfile.write(str1)
# # wfile.write(str2)
# wfile.writelines(list1) #使用列表方式写,注意要换行自己添加'\n',否则不会自动换行
# wfile.close()

# ---写文件----如果文件不存在,则自动新增一个新文件并打开
# 方法---write();只能写入一串字符串 ,写入时会先清空文件(覆盖写入)----只能是字符串
#  w--覆盖写入   a---追加写入,指针停在最后
# 方法---writelines();写入一个列表

# str1 = 'my name is \n hanmeimei'
# str2 = '12355\n23424\n345678'
# list1 = ['my name\n','is\n','hanmeimei']
# wfile = open('test2.txt','a')
# # wfile.write(str1)
# wfile.write(str2)
# # wfile.writelines(list1) #使用列表方式写,注意要换行自己添加'\n',否则不会自动换行
# wfile.close()

# 特殊注意事项
# a = [1,2,3,4]
# b = 123
# a1 = [str(i) for i in a]
# print(a1)
# wfile = open('test2.txt','w')
# wfile.writelines(a1) # 如果是传入列表的时候,要保证列表元素每一个元素都是字符串
# wfile.write(b)  # 必须写入内容为字符串
# wfile.close()

# 涉及到汉字
# rfile = open('test2.txt','r',encoding='utf8')
# rfile.seek(3) # 有汉字时,一个中文需要三个字节
# print(rfile.read(3))
# rfile.close()

#  练习:定义一个函数,通过传入一个数字,生成1到数字的随机值,并将值写入当前目录的文件里
# import random
# def add(num):
#     num1 = random.randint(1,num)
#     wfile = open('test2.txt','a')
#     wfile.write(str(num1))
#     wfile.close()
# add(5)

# 随机往文件写入一行内容,4个1-100的数字,数字随机且以空格隔开
# def fool():
#     import random
#     wfile = open('test2.txt','a')
#     for i in range(4):
#         num = random.randint(1, 100)
#         wfile.write(str(num)+' ')
#     wfile.close()
# fool()


# 随机往文件写入4行内容,每行有4个1-100的数字,数字随机,且以空格隔开
# def fool2():
#     for i in range(4):
#         import random
#         wfile = open('test2.txt', 'a')
#         for i in range(4):
#             num = random.randint(1, 100)
#             wfile.write(str(num) + ' ')
#         wfile.write('\n')
#         wfile.close()
#
# fool2()

# with open() as f:  #  可以省略关闭操作
#     f.write('  ')

#  可以对多个文件进行操作
with open('test1.txt','a') as f,open('test2.txt','r') as fr:
    all = fr.read()
    f.write(all)

'''
r+ :
    可读可写.打开文件后指针放在文件开头的.如果在开头写入内容,会覆盖原本文件对应的字符数量.
w+  :
    可读可写.每次打开文件先清空.如果使用seek(0) 把指针移到最前面写入,会覆盖原本文件对应的字符数量
a+  :
     可读可写.每次打开文件.指针在文件的末尾.使用seek方法只能控制读取的位置.写入永远是追加到末尾的.

'''
# with open("test2.txt","r+") as f:  # 可读可写.打开文件后指针放在文件开头的.如果在开头写入内容,会覆盖原本文件对应的字符数量.
#     f.write("AAA")
#     print(f.read(10))
举报

相关推荐

0 条评论