默认情况下,Newtonsoft.Json 库序列化和反序列化 JSON 到 .NET 类型的时候,对于枚举值,使用的是整数。...然而,在公开 JSON 格式的 API 时,整数会让 API 不易于理解,也不利于扩展和兼容。 那么,如何能使用字符串来序列化和反序列化 JSON 对象中的枚举呢?...—— 使用转换器(JsonConverter)。 Newtonsoft.Json 中自带了一些转换器,在 Newtonsoft.Json.Converters 命名空间下。...None, ABit, Normal, Very, Extreme, } } 对于“逗比程度”枚举,增加了转换器后,这个对象的序列化和反序列化将成...本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。
文件打开使用open()函数,同时创建一个相关的对象。...如果该文件不存在,则创建读取和写入新的文件。 wb+ 打开用于写入和读取的二进制格式的文件。覆盖现有的文件,如果文件存在。如果该文件不存在,则创建读取和写入新的文件。 a 将打开追加文件。...如果该文件不存在,它创建并写入一个新的文件。 a+ 打开为追加和读取文件。文件指针在该文件的结束。该文件将为追加模式。如果该文件不存在,它创建并读取和写入的新文件。...ab+ 打开两个追加和读取的二进制格式的文件。文件指针在该文件的结束。该文件将在追加模式。如果该文件不存在,它创建并读取和写入的新文件。 ...”\n”换行,参数也是[size]控制,其和read()的区别就是当readline()某行中的字符不够时,只读取改行,而read()会读取其他行的内容。
default_with_oids (boolean) 这个参数控制CREATE TABLE和CREATE TABLE AS在既没有指定WITH OIDS也没有指定WITHOUT OIDS的情况下,是否在新创建的表中包含...我们反对在用户表中使用 OID ,因此大多数安装应该禁用这个变量。需要为一个特殊表使用 OID 的应用应该在创建表的时候指定WITH OIDS。为了兼容不遵循这一行为的老旧应用,这个变量可以被启用。...lo_compat_privileges (boolean) 在PostgreSQL 9.0 之前,大对象不具有访问特权并且因此总是所有用户可读可写的。...因为expr = NULL形式的表达式总是返回空值(使用 SQL 标准解释)。它们不是非常有用并且在普通应用中也不常见,在应用中也不常见,因此这个选项实际上没有什么危害。...请注意这个选项只影响= NULL形式,而不影响其它比较操作符或者其它与一些涉及等值操作符的表达式在计算上等效的其他表达式(例如IN)。因此,这个选项不是劣质程序的一般修复。
input([ 提示] ) 如果提示参数存在,则将其写入标准输出而没有尾随换行符。然后该函数从输入中读取一 行,将其转换为一个字符串(剥离尾随的换行符),然后返回该行。...如果X不是数字或如果基给出,则X必须是一个字符串, bytes或bytearray代表一个实例字 面整数在基数基。可选地,文字可以在+或之前-(没有间隔)并且被空白包围。...如果object不是给定类型的对象,则该函数总是返回false。如果classinfo是类型对象的元组(或者是递归的,其他这样的元组),如果object是任何类型的实例,则返回true 。...如果classinfo不是类型和元组的类型或元组,TypeError则会引发异常。...在这种情况下创建的迭代器将为每个对其方法的调用调用没有参数的 对象next(); 如果返回的值等于 哨兵,StopIteration 将被提出,否则该值将被退回。
你可以把一个文件的内容想象成一个单独的字符串值,大小可能是千兆字节。在本章中,您将学习如何使用 Python 来创建、读取和保存硬盘上的文件。...另外,注意os.path.split()没有而不是获取文件路径并返回每个文件夹的字符串列表。为此,使用split()字符串方法并在os.sep中拆分字符串。(注意sep是在os,不是os.path。)...从 Python 3.6 开始,您还可以向open()函数传递一个Path对象,而不是文件名的字符串。...函数会将相同的文本作为字符串返回,而不是打印出来。...计算机上运行的每个程序都有一个当前工作目录,这允许您指定相对于当前位置的文件路径,而不是总是键入完整(或绝对)路径。pathlib和os.path模块有许多操作文件路径的函数。
在变量pi_string存储的字符串中,包含原来位于每行左边的空格,为删除这些空格,可使用strip()而不是rstrip()。 ? 输出: ?...6.包含一百万位的大型文件 有一个文本文件,其中包含精确到小数点后100万位而不是30位的圆周率值,也可创建一个包含所有这些数字的字符串。无需对程序做任何修改,只需将这个文件传递给它即可。...3.附件到文件 要给文件添加内容,而不是覆盖原有内容,可以附加模式打开文件。以附加模式打开文件时,Python不会在返回文件对象前清空文件,而写入到文件的行都将添加到文件末尾。...如果指定的文件不存在,Python将创建一个空文件。 ? 输出: ? 打开文件时指定了实参'a',以便将内容附加到文件末尾,而不是覆盖文件原来的内容。...2.保存和读取用户生成的数据 调用json.dump(),并将用户和一个文件对象传递给它,从而将用户名存储到文件中。 ? 输出: ? 使用json.load()中的信息读取到变量username中。
(要读取和写入原始字节,请使用二进制模式并不要指定 encoding。)...locals 可以是任何映射对象。 这个函数也可以用来执行任何代码对象(如 compile() 创建的)。这种情况下,参数是代码对象,而不是字符串。...这总是当前模块的字典(在函数或方法中,不是调用它的模块,而是定义它的模块)。 locals() 更新并返回表示当前本地符号表的字典。在函数块而不是类块中调用 locals() 时会返回自由变量。...如果对象不提供 dir(),这个函数会尝试从对象已定义的 dict 属性和类型对象收集信息。结果列表并不总是完整的,如果对象有自定义 getattr(),那结果可能不准确。...默认的 dir() 机制对不同类型的对象行为不同,它会试图返回最相关而不是最全的信息: 如果对象是模块对象,则列表包含模块的属性名称。
字符串总是以引号开始和结束。 本章介绍的三种数据类型是整数、浮点数和字符串。 表达式是值和运算符的组合。所有表达式都计算(即归约)为一个值。 表达式计算为单个值。语句不会。...函数中的代码在调用函数时执行,而不是在定义函数时执行。 def语句定义(即创建)一个函数。 函数由def语句及其def子句中的代码组成。...C:\bacon\eggs是目录名,而spam.txt是基本名。 字符串'r'表示读取模式,'w'表示写入模式,'a'表示附加模式 以写入模式打开的现有文件将被擦除并完全覆盖。...使用doc.paragraphs。 Run对象有这些变量(不是段落)。 True总是使Run对象加粗,False总是不加粗,不管样式的加粗设置是什么。...注意,您传递给crop()的是一个盒子元组,而不是四个独立的整数参数。 调用Image对象的imageObj.save('new_filename.png')方法。
接下来,我们使用Python实现压缩和解压。 读取ZIP文件信息 要读取ZIP文件的内容,首先必须创建一个ZipFile对象。ZipFile对象在概念上与File对象相似。...要创建一个 ZipFile 对象,就调用 zipfile.ZipFile()函数,向它传入一个字符串,表示.zip 文件的文件名。...ZipInfo 对象有自己的属性,诸如表示字节数的 file_size 和 compress_size,它们分别表示原来文件大小和压缩后文件大小。...ZipFile 对象表示 整个归档文件,而 ZipInfo 对象则保存该归档文件中每个文件的有用信息。...或者, 你可以向 extractall()传递的一个文件夹名称,它将文件解压缩到那个文件夹,而不是当前工作 目录。如果传递给 extractall()方法的文件夹不存在,它会被创建。
一、Java String 类——String字符串常量 字符串广泛应用 在Java 编程中,在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作字符串。...和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。...StringBuffer s = new StringBuffer(“abc”);//创建带有内容的StringBuffer对象,对象的内容就是字符串” 小结:(1)如果要操作少量的数据用 String...例如,如果z引用一个当前内容为“start”的字符串的生成器对象,则该方法调用z.append(“le”)将使字符串生成器包含“startle”,而z.insert(4,”le”)将更改字符串生成器,使之包含...,最终应用StringBuilder()进行字符串数据的读取和显示。
使用Python读取和解析JSON数据教程 JSON格式是网站和API使用的通用标准格式,现在主流的一些数据库(如PostgreSQL)都支持JSON格式。...返回的数据类型将取决于输入的字符串。例如,下面这个JSON字符串将返回一个列表,而不是一个字典。...一般loads用于读取JSON字符串,而load()用于读取文件中的JSON数据。 load()方法接收一个文件对象并返回解析为Python对象的JSON数据。...Python类对象 到目前为止,我们已经讨论了如何使用json.load()和json.loads()方法创建字典、列表等。...如果我们想读取JSON对象并创建自定义类对象又该怎么办? 在本节中,我们将创建一个自定义JSON解码器,帮助我们创建自定义对象。
②处理流 概念:是对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读写。如BufferedReader.处理流的构造方法总是要带一个其他的流对象做参数。...try(流对象的创建){ 流的操作 }catch (IOException e) { 异常处理 } 字符流具体使用 Ⅰ文件流 与FileInputStream和FileOutputStream...StringWriter (int initialSize) 使用指定的初始字符串缓冲区大小创建新的字符串writer。...缓冲区会随向流中写入数据而自动增长。可使用 toCharArray()和 toString()获取数据。...这些方法使用平台自有的行分隔符概念,而不是换行符。 此类中的方法不会抛出 I/O 异常,尽管其某些构造方法可能抛出异常。
1)、程序由模块构成 2)、模块包含语句 3)、语句包含表达式 4)、表达式建立并处理对象 一、使用内置类型 除非有内置类型无法提供的特殊对象需要处理,最好总是使用内置对象而不是使用自己的实现...列表和字典都可以嵌套,可以随需求扩展和删减。并能包含任意类型的对象。 Python中没有类型声明,运行的表达式,决定了建立和使用对象的类型。同等重要的是,一旦创建了一个对象。...这是python的一般特性,多态,即一般操作的意义取决于被操作的对象。字符串具有不可变性,在创建后值不能改变。不能通过对其某一位置进行赋值而改变字符串。...唯一的区别就是其结果往往是列表而不是字符串。...字典的索引操作使用的语法和序列相同,但在方括号中的元素是键,而不是相对位置 >>> D {'food': 'spam', 'color': 'pink', 'quantity': 4} >>> D
前言 Blob、ArrayBuffer、File、FileReader、FormData这些名词总是经常看到,知道一点又好像不知道,像是同一个东西好像又不是,总是模模糊糊,最近终于下决心要弄清楚。...,此行为就相当于对ArrayBuffer数据做一个封装,之后就是以整体的形式展现了 应用上的区别:由于ArrayBuffer和Blob的特性,Blob作为一个整体文件,适合用于传输;而只有需要关注细节(...在v6.0之前创建Buffer对象直接使用new Buffer()构造函数来创建对象实例,但是Buffer对内存的权限操作相比很大,可以直接捕获一些敏感信息,所以在v6.0以后,官方文档里面建议使用 Buffer.from...file对象也是二进制对象,从属于Blob;也就是说file是Blob里的一个小类,Blob的属性和方法都可以用于file,而file自己也有自己特有的属性和方法。...(blob)就是将二进制数据读取并编码为Base64格式,FileReader.readAsText(blob)就是将二进制数据读取并编码为字符串形式。
reader对象 要用csv模块从 CSV 文件中读取数据,您需要创建一个reader对象。一个reader对象让你遍历 CSV 文件中的行。...delimiter和lineterminator关键字参数 假设您希望用制表符而不是逗号来分隔单元格,并且希望行是双倍行距。...从 CSV 文件中读取数据作为 Python 程序的输入。 JSON 和 API JavaScript 对象符号是将数据格式化为单个人类可读字符串的一种流行方式。...注意,JSON 字符串总是使用双引号。它将以 Python 字典的形式返回数据。...编写 JSON 与dumps()函数 json.dumps()函数(意思是“转储字符串”,而不是“转储”)将把 Python 值转换成 JSON 格式的数据字符串。
总是实现泛型版本 Comparable 而不是实现原始类型 Comparable 。因为这样可以节省代码量和减少不必要的麻烦。 只关心返回结果的正负号(负/零/正),它们的大小不重要。...使用 super.clone() 让Object类负责创建新的对象。 基本类型域都已经被正确地复制了。同样,我们不需要去克隆String和BigInteger等不可变类型。...从文件里读取文本 ? BufferedReader对象的创建显得很冗长。这是因为Java把字节和字符当成两个不同的概念来看待(这与C语言不同)。...要一次读取一个字符,使用Reader.read()方法。 你可以使用其他的字符编码而不使用UTF-8,但最好不要这样做。...Printwriter对象的创建显得很冗长。这是因为Java把字节和字符当成两个不同的概念来看待(这与C语言不同)。
支持所有可能的行结束符,程序可以读取任何广泛使用的操作系统创建的文本文件。 修改 CopyCharacters 来演示如使用面向行的 I/O。...(请参阅命令行I/O)当你需要创建一个格式化的输出流,请实例化 PrintWriter,而不是 PrintStream。...它们还支持对文件和程序之间的 I/O,但该功能是通过命令行解释器,而不是由程序控制。...第二,readPassword 返回一个字符数组,而不是字符串,所以,密码可以被覆盖,只要它是不再需要就可以从存储器中删除。 Password 例子是一个展示了更改用户的密码原型程序。...现在,DataStreams 可以读取流里面的每个记录,并在遇到它时将数据报告出来: ? 请注意,DataStreams 通过捕获 EOFException 检测文件结束的条件而不是测试无效的返回值。
filename — 代码文件名称,如果不是从文件读取代码则传递一些可辨认的值。...参数filename用于在执行代码报错的运行时错误消息中显示该参数对应的信息,当source是执行代码从文件中读取的代码字符串时,则可以存放文件名,如果不是从文件里读取源码来编译,那么这里可以放一些用来标识这些代码的字符串...exec’表示编译的是一段代码或模块, ‘single’表示编译的是一个单独的语句, ‘eval’表示编译的是一个表达式而不是一个语句 flags — 变量作用域,局部命名空间,如果被提供,可以是任何映射对象...或eval来执行,而AST可以使用eval()来继续编译(关于AST的内容本节都不介绍,ATS 对象:Abstract Syntax Tree,抽象语法树,是源代码语法结构的一种抽象表示。...AST 对象时,Python 解释器会因为 Python AST 编译器的栈深度限制而崩溃 使用示例 先执行一个简单的代码段, 代码段写到一个字符串 a = """ x = "hello" print
默认的 dir() 机制对不同类型的对象有不同的表现,因为它试图产生最相关的信息,而不是完整的信息: ·如果对象是模块对象,则列表包含模块属性的名称。...它总是当前模块的字典(在函数或方法内部,它是定义它的模块,而不是从中调用它的模块)。 hasattr(object, name) 参数是一个对象和一个字符串。...如果 object 不是给定类型的对象,则该函数总是返回 false。如果 classinfo 是类型对象的元组, object 是其中任何一个类型的实例,则返回 true。...(为了读取和写入原始字节,使用二进制模式并且不用指定编码)可用的模式有: 默认模式是 'r'(用于读取文本,'rt' 的同义词)。...sep 和 end 都必须是字符串;它们也可以是 None,这意味着使用默认值。如果没有给出对象,print() 将只写入 end。
领取专属 10元无门槛券
手把手带您无忧上云