''' 文件操作,读与写 包含绝对路径:从盘符开始一层一层向下定位到具体文件 相对路径: 和当前所在脚本位置有关,同级别的不需要添加任何位置设定 ,上级 .. ''' # 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))