基础篇_011_文件操作_4中schema的介绍

----文件的读取之全是英文 ===》

  现在在Pycharm中创建一个文本文件,命名为"20200303",此文件中的内容为全英文(注意: 这里仅考虑全英文的状态,中文乱码的问题待会儿再说) ===》

You are the most powerful thief in the world. umm, I mean maybe you have stolen my shadow, so no matter where you are I'm sure I'll miss you. Probably, I have a crush on you.(自我吐糟一下,我的英语真烂)。

由于全部都是英文所以我们可以放心大胆的用read()函数了 ===》

file = open("20200303")    # 向操作系统索取文件句柄
data = file.read()                # 将文件中读取的内容存到一个data的变量中
print(data)                         # 将内容打印出来                              
file.close()                         # 关闭文件流 
View Code

输出的结果自然就是上面那几句Chinglish了。当然作为一个"资深的"中国玩家,写的文件必然不会全是英文,这样就有可能产生字符编码和解码时造成的乱码问题。

 

----文件的读取之有了中文 ===》

  1. Pycharm默认的编码方式为"utf-8" ===>

# 用open()函数默认的解码方式解译"Pycharm默认编码"
file = open("Pycharm默认编码")  # 在这里Pycharm默认编码是"utf-8"
data = file.read()
print(data)
# 报错:'gbk' codec can't decode byte 0xae in position 12: illegal multibyte sequence
# 大致意思就是open()函数默认的"gbk"编码不能解译。
file.close()
用open()函数默认的解码方式解译"Pycharm默认编码"
# 给open()函数传入指定的关键字参数解码方式解译"Pycharm默认编码"
file = open("Pycharm默认编码", encoding="utf-8")  # 在这里Pycharm默认编码是"utf-8"
data = file.read()
print(data)
# 输出:Pycharm 默认的编码——utf-8
file.close()
给open()函数传入指定的关键字参数(encoding=)解码方式解译"Pycharm默认编码"

  2. 在设置里面("Ctrl + Alt + S" / File文件 --> setting设置),打开editor编辑器,里面有个file encoding,其中有三个参数: (如果想要使得.py文件遵循此规则的话,务必去掉在开头写的话: # -*- encoding: utf-8 -*-)

--(1). Global Encoding: 整个所有的Pycharm都用选择的编码方式编码文件。如果选择"<System Default>" / "NOENCODING"则就是系统默认的编码方式。Mac是"utf-8",Windows是"GBK"。

--(2). Project Encoding: 仅当前项目用所选编码方式。如果选择"<System Default>" / "NOENCODING"则会自动从 Global Encoding哪里继承下来。如果文件中包含了有关于指定encoding的代码模板,此模板将覆盖Project Encoding,并且文件编码不可改变,除非删掉模板中的有关语句。

--(3). Properties Files(*.properties)文件编码: 仅属性文件(properties files)运用所选编码方式。

 

----文件打开的模式(Schema) ===》

  1. 默认为只读模式("r"): 从上面的代码中可以看出,我们并没有规定打开文件所用的模式,但是我们依然可以调用read();

在只读模式下有几个方法 ===》

--(1). read(): 将文件中的内容全部读完,并将游标直接指向文件尾部。

--(2). readline(): 从文件游标所在位置开始,读取文件中的一行(包括行末尾的换行符),并让文件游标指向下一行行首。

--(3). readlines(): 将文件中的所有内容存到一个列表中,列表中的每一个元素即为每一行的实际内容(换行符用"\n"表出)。

前三个读取文件的方法结合使用时游标会跟随操作一直移动,比如说当调用read()函数取出所有内容时,再调用readline()或者readline()函数的时候发现返回的结果为None或者[]。

--(4). readable(): 判断文件是否为可读模式。

  2. 写模式("w"): 如果文件不存在,会在指定路径下创建一个新的文件; 如果文件存在,会覆盖原有文件。写模式也有几种方法 ===》

--(1). write(str): 将一个字符串写入文件。

--(2). writelines(list): 将列表中的元素一个个写入文件(元素了类型只能是字符串类型),值得注意的是,虽然叫writelines但是并不是每个元素占一行。

--(3). writeable(): 判断文件是否为可写模式。

  3. 追加模式("a"): 直接在末尾追加输入的字符串。

  4. 可读可写模式("r+" / "w+"): 从文件游标的位置覆盖内容。文件修改的本质是数据覆盖,当我们修改文件的时候都通过软件(Word、记事本...)调用操作系统,将指定文件的内容从硬盘中取到内存中进行操作,保存的(Ctrl + S)的时候就是将内存中的数据全部覆盖硬盘中的数据。

  5. with关键字和as关键字: 我们可以通过with open(file_name, open_schema, encoding=code_type) as varible_name的形式来打开文件,这样的好处是,我们再也不用手动关闭文件流了。

 

posted @ 2020-03-03 16:51  BNTU  阅读(149)  评论(0)    收藏  举报