笔记:
内置函数 open():打开文件,参数如下:
open(file,'r') 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
open(file,'r+') 打开一个文件用于读写。文件指针将会放在文件的开头,在此模式写入时会替换文件开头的内容。
================================================================================================
open(file,'w') 打开一个文件只用于写入。如果该文件已存在则打开文件,会清空原有内容,写入时从头开始编辑。如果该文件 不存在,创建新文件。
open(file,'w+') 打开一个文件用于读写。如果该文件已存在则打开文件,会清空原有内容,如果该文件不存在,创建新文件。 写入时从头开始编辑。写完光标放在文件末尾,此时读取不到内容,可以用seek()移动光标到文件起始位置。
================================================================================================
open(file,'a') 打开一个文件用于追加,文件指针将会放在文件的结尾。新的内容将会被写入到已有内容之后。如果该文件不存 在,创建新文件进行写入。
open(file,'a+') 打开一个文件用于追加读写,文件指针将会放在文件的结尾。新的内容将会被写入到已有内容之后。如果该文件 不存在,创建新文件用于读写。打开时和写完后读取不到内容,因为光标在文件末尾位置,可以用seek()移动光 标到文件起始位置来读取。
注:以上所有的参数加上b(例如'rb+'), 则是以二进制读取,在以后用到socket的时候,传输文件,读取和写入用的都是二进制形式,可以更快速的进行文件的传输;
基础练习:
from sys import argv
script, filename = argv
#open---打开文件,注意open返回的是文件对象(file object),然后赋值给txt;
txt = open(filename)
print(f"Here's your file {filename} :")
#从open获得的是文件(file),文件本身也可以接受你给它的命令,接受的方式是在文件后使用句点“.”,句点后紧跟你要给它的命令;
#read()---读取文件内容,print()打印出来;
print(txt.read())
print("Type the filename again :")
file_again = input("> ")
txt_again = open(file_again)
print(txt_again.read())
注意:
第6行使用了新的函数打开,具体看一下第5行的注释;
第11行使用了新函数读(),具体看一下第9,10行的注释;
结果:
注意:
一定要有一个名为ex15_sample的TXT文件,结果有很大的间隔是因为我在TXT文件中的末尾加了两个回车;
瞎折腾:
1.试一下关闭(),处理完的文件要把它关闭,这个非常重要要;
from sys import argv
script, filename = argv
txt = open(filename)
print(f"Here's your file {filename} :")
print(txt.read())
txt.close()
2.上面的结果虽然没报错,但也看不出来是否关闭,所以试着在关闭文件后再读取并打印文件
from sys import argv
script, filename = argv
txt = open(filename)
print(f"Here's your file {filename} :")
print(txt.read())
txt.close()
#再次读取并打印
print(txt.read())
结果显示:上面结果是对的,关闭后再次读取就报错了:文件的输入输出操作已关闭;
3.在PowerShell的中录入的Python代码
先在Python的中打开文件
报错了:名字没有定义,然后试下名字加上 ''
这次可以了,读()一下,但是显示格式很奇怪,但是打印()一下就好了
然后在蟒蛇中编辑多行代码试试
EMM,出来的是很奇怪的东西,也没报错,换一种写法试试
现在好了,真是纯属瞎折腾;