第一部分的意思是……我还没成为python王呢(想写高手都过不了),但我才刚刚开始。一直很羡慕人家玩爬虫,办公自动化,用python玩股票,看着都牛逼。我不想当菜鸟了,我也想发财!第一步是把每天学到的东西记录下来,加深印象。有没有骚年跟我一起冲啊!!!好吧好吧,我先走了。(如果小白看到,肯定对我写的东西表示怀疑;如果高手无意中看到,写错了还请大家指正!)文件操作1.基本步骤用几个简单的代码来描述步骤:#1.创建文件对象,打开f=open('test.txt','w')#2.写入内容f.write('test')#3.关闭文件对象f.close()注:文件对象需要关闭,否则会一直占用内存。2、访问模式模式说明r以只读模式打开文件。文件指针将放置在文件的开头。这是默认模式。rb以二进制格式打开一个只读文件。文件指针将放置在文件的开头。这是默认模式。r+打开文件进行读写。文件指针将放置在文件的开头。rb+以二进制格式打开文件进行读写。文件指针将放置在文件的开头。w打开一个只写文件。如果文件已经存在,则从头开始编辑文件,即删除原来的内容。如果该文件不存在,则创建一个新文件。wb以二进制格式打开一个只写文件。如果文件已经存在,则从头开始编辑文件,即删除原来的内容。如果该文件不存在,则创建一个新文件。w+打开文件进行读写。如果文件已经存在,则从头开始编辑文件,即删除原来的内容。如果该文件不存在,则创建一个新文件。wb+以二进制格式打开文件进行读写。如果文件已经存在,则从头开始编辑文件,即删除原来的内容。如果该文件不存在,则创建一个新文件。a打开文件进行追加。如果文件已经存在,文件指针将放在文件末尾。也就是说,新内容将写在现有内容之后。如果该文件不存在,则创建一个新文件用于写入。ab以二进制格式打开文件以进行追加。如果文件已经存在,文件指针将放在文件末尾。也就是说,新内容将写在现有内容之后。如果该文件不存在,则创建一个新文件用于写入。a+打开文件进行读写。如果文件已经存在,文件指针将放在文件末尾。该文件将以追加模式打开。如果该文件不存在,则新建一个文件进行读写。ab+以二进制格式打开文件以进行追加。如果文件已经存在,文件指针将放在文件末尾。如果该文件不存在,则新建一个文件进行读写。这里主要介绍几种访问方式:r只读,不支持写,文件不存在会报错;w是只写的,如果文件不存在则创建一个新文件;书面内容将覆盖原有内容;aappend,文件将不存在创建一个新文件;书面内容附加于原始内容;如果没有访问模式,则默认为“r”。r+、w+、a+的区别:三种模式都是可读可写的,而r+沿用了r的属性,文件不存在会报错;r+和w+的文件指针在文件开头,而a+的文件指针在文件开头和文件末尾,所以使用a+不能直接通过.read()读取;使用w+会被新内容覆盖,使用.read()不能直接读取。3、文件对象方法3.1读取3.1.1read()对象。read(num)num表示从文件中读取数据的字节长度,如果没有num则全部读取;您可以使用print()打印出来。3.2readlines()根据行一次读取全部内容,返回一个列表(记住换行符);3.3readline()一次读取一行;f=open('test.txt')content=f.readline()print(f'第一行:{content}')content=f.readline()print(f'第二行:{content}')f.close()3.4seek()函数:移动文件指针(可以解决上面提到的“无法直接读取数据”!)文件对象.seek(offset,startposition)起始位置:0:文件开头1:当前位置2:文件结尾f=open('test.txt','w+')f.write('aaa')f.seek(0)print(f.read())f.close()如果不使用seek,则重新test.txt-covered之后不能直接读取写入的内容,因为此时指针在'aaa'后面,seek(0),即seek(0,0),将指针的位置移动到开头,那么你现在可以通过read()来读取它了!4、文件备份是一种知识应用。我们先回顾一下string中的函数,它是用来查找最后一次出现的搜索字符串:string.rfind(str,beg=0,end=len(string))str:findthestringbeg:的起始位置thesearch,defaultis0end:搜索位置的末尾,默认为str的长度old_name=input("Enterthebackupfilename:")#查找最后出现的字符串并返回index=old_name.rfind('.')ifindex>0:#这里是为了防止文件名不规范#记录后缀postfix=old_name[index:]#创建备份文件名new_name=old_name[:index]+'_bak'+postfix#只读打开源文件,只写打开备份文件(new)old_f=open(old_name,'rb')#二进制读写new_f=open(new_name,'wb')#writecontent=old_f.read()new_f.write(content)#关闭文件old_f.close()new_f.close()课程中,老师在写的时候,使用了old_f.read(1024),进行了一次whileTrue循环,直到内容为空才break退出循环。.read()可能无法读取所有数据的原因是什么?5.os模块导入os文件重命名os.rename()删除文件os.remove()创建文件夹os.mkdir()删除文件夹os.rmdir()获取当前目录os.getcwd()更改默认目录os.chdir()获取目录列表os.listdir()然后我们用一个应用案例来批量合并和重命名当前目录下的文件:importos#获取当前目录curr_dir=os.getcwd()print(curr_dir)#更改当前目录Renamesecret_...下的所有文件forfileinos.listdir(curr_dir):os.rename(file,'secret_'+file)6.没有withopen(...)asf个人补课中:还好之前学过。这种写法最大的区别就是不需要关闭文件,程序会自动关闭这种写法。当然,写法越简单越好!
