精华内容
下载资源
问答
  • Python读写文本文件

    千次阅读 2021-02-26 10:59:45
    这些文件可能是文本文件、CSV 文件、Excel 文件或其他类型文件。知道如何访问此类文件以及从中读取数据是在 Python 进行数据处理、加工与分析的前提。当完成了一个每秒钟可以处理很多文件的程序时,与手动一个个...

    Python读写文本文件

    读取文本文件

    数据几乎无一例外地是被保存在文件中的。这些文件可能是文本文件、CSV 文件、Excel 文件或其他类型的文件。知道如何访问此类文件以及从中读取数据是在 Python 中进行数据处理、加工与分析的前提。当完成了一个每秒钟可以处理很多文件的程序时,与手动一个个地处理文件相比,你会真正体会到写程序的好处。

    你需要告诉 Python,脚本要处理何种类型的文件。你可以在程序中写死文件名称,但是如果这样的话,就不能使用这个程序处理多个不同的文件了。能读取多个不同文件的方法是,在命令行窗口或终端窗口的命令行中,在 Python 脚本的名字后面加上完整的文件路径名。要使用这种方法,需要在脚本开始时导入内置的 sys 模块。在脚本上方加上 import sys 语句之后,就可以在脚本中使用 sys 模块提供的所有功能了:

    #!/usr/bin/env python3
    from math import exp, log, sqrt
    import re
    from datetime import date, time, datetime, timedelta
    from operator import itemgetter
    import sys
    

    导入了 sys 模块之后,你就可以使用 argv 这个列表变量了。这个变量捕获了传递给 Python 脚本的命令行参数列表,即你在命令行中的所有输入,包括你的脚本名称。和任何其他列表一样,argv 也有索引。argv[0] 就是脚本名称,argv[1] 是命令行中传递给脚本的第一个附加参数,在这个例子中,就是 first_script.py 将要读取的文件路径名。

    创建文本文件

    要读取一个文本文件,首先要创建它。要创建文本文件,需执行以下步骤。

    (1) 打开 Spyder IDE 或一个文本编辑器(例如:Windows 系统下的 Notepad、Notepad++、Sublime Text;macOS 系统下的 TextMate、TextWrangler、Sublime Text)。

    (2) 在文本文件中写入下面 6 行:

    I'm
    already
    much
    better
    at
    Python.
    
    Notepad++ 中的文本文件 file_to_read.txt(Windows)

    复制代码{%}

    (3) 将文件保存在桌面上,文件名为 file_to_read.txt。

    (4) 将下面几行代码添加到 first_script.py 的下方:

    # 读取文件
    # 读取单个文本文件
    input_file = sys.argv[1]
    
    print "Output #143: "
    filereader = open(input_file, 'r')
    for row in filereader:
        print row.strip()
    filereader.close()
    

    示例中的第一行代码使用 sys.argv 列表捕获了要读取的文件的路径名,并将路径名赋给变量 input_file。第二行代码创建了一个文件对象 filereader,其中包含了以 r 模式(只读模式)打开的 input_file 文件中的各个行。下一行中的 for 循环每次读取 filereader 对象中的一行。for 循环内部的 print 语句打印出每一行,并且在打印之前用 strip 函数去掉每一行两端的空格、制表符和换行符。最后一行代码在输入文件中的所有行都被读取并打印到屏幕后,关闭 filereader 对象。

    (5) 重新保存 first_script.py。

    (6) 要读取刚才创建的文本文件,输入下面的命令,如图所示,然后按回车键:

    python first_script.py file_to_read.txt
    
    Python 脚本和它要在命令行窗口中处理的文本文件

    在这里插入图片描述
    这样,你就在 Python 中读取了一个文本文件。你会看到下面的内容被打印到屏幕上,在以前的输出之后:

    I'm
    already
    much
    better
    at
    Python.
    
    first_script.py 的输出,在命令行窗口中处理文本文件

    在这里插入图片描述

    脚本和输入文件在同一位置

    因为 first_script.py 和 file_to_read.txt 在同一位置,即都在桌面上,所以简单地输入 python first_script.py file_to_read.txt 是可以的。如果文本文件和脚本不在同一位置,就需要输入文本文件的完整路径名,这样脚本才能知道去哪里寻找这个文件。

    例如,如果文本文件在你的 Documents 文件夹中,而不是在桌面上,那么你可以在命令行中使用下面的路径名来从其所处位置读取文本文件:

    python first_script.py "C:\Users\[Your Name]\Documents\file_to_read.txt"
    

    读取文件的新型语法

    前面讲的用来创建 filereader 对象的那行代码是创建文件对象的传统方法。这种方法没有什么问题,但是它使文件对象一直处于打开状态,直到使用 close 函数明确地关闭或直到脚本结束。尽管这种做法一般没有问题,但不够清晰,还被证明在更复杂的脚本中会导致错误。从 Python 2.5 开始,你可以使用 with 语句来创建文件对象。这种语法在 with 语句结束时会自动关闭文件:

    input_file = sys.argv[1]
    print("Output #144:")
    with open(input_file, 'r', newline='') as filereader:
    for row in filereader:
        print("{}".format(row.strip()))
    

    你可以看到,使用 with 语句的版本与前一个版本非常相似,但是它不需调用 close 函数来关闭 filereader 对象。

    这个示例演示了如何使用 sys.argv 来访问并打印一个文本文件中的内容。这是一个简单的示例,但在后面的示例中,要以此为基础访问其他类型的文件,或一次访问多个文件,并向输出文件中写入内容。

    下面介绍 glob 模块,它让你能够通过几行代码读取和处理多个输入文件。glob 模块之所以功能强大,是因为它处理的是文件夹(也就是说,它处理目录,不是单个的文件),所以将前面读取文件的代码删除或注释掉,这样就可以使 argv[1] 指向一个文件夹,而不是一个文件了。将代码注释掉就是在你希望计算机忽略掉的代码前面加上一个井号,所以当你结束注释时,first_script.py 文件就应该像下面这样:

    ## 读取一个文本文件(旧方法) ##
    #input_file = sys.argv[1]
    #print("Output #143:")
    #filereader = open(input_file, 'r', newline='')
    #for row in filereader:
    # print("{}".format(row.strip()))
    #filereader.close()
    ## 读取一个文本文件(新方法) ##
    #input_file = sys.argv[1]
    #print("Output #144:")
    #with open(input_file, 'r', newline='') as filereader:
    # for row in filereader:
    # print("{}".format(row.strip()))
    

    做完这些修改之后,你就可以添加下一节要讨论的 glob 代码来处理多个文件了。

    使用glob读取多个文本文件

    在很多商业应用中,需要对多个文件进行同样的或相似的处理。例如,你可能会从多个文件中选择数据子集,根据多个文件计算像总计和均值这样的统计量,或根据来自于多个文件的数据子集计算统计量。当文件数量增加时,手动处理文件的可能性会减小,出错的概率会增加。

    读取多个文件的一种方法是在命令行中将包含输入文件目录的路径名写在 Python 脚本名称之后。要使用这种方法,你需要在脚本开头导入内置的 os 模块和 glob 模块。在脚本上方添加了 import os 和 import glob 语句之后,你就可以使用 os 模块和 glob 模块提供的所有功能了:

    #!/usr/bin/env python3

    from math import exp, log, sqrt
    import re
    from datetime import date, time, datetime, timedelta
    from operator import itemgetter
    import sys
    import glob
    import os
    

    当导入了 os 模块之后,你就可以使用它提供的若干种路径名函数了。例如,os.path.join 函数可以巧妙地将一个或多个路径成分连接在一起。glob 模块可以找出与特定模式相匹配的所有路径名。os 模块和 glob 模块组合在一起使用,可以找出符合特定模式的某个文件夹下面的所有文件。

    要读取多个文件,需要再创建一个文本文件。

    创建另一个文本文件
    (1) 打开 Spyder IDE 或一个文本编辑器(例如:Windows 系统下的 Notepad、Notepad++、Sublime Text;macOS 系统下的 TextMate、TextWrangler、Sublime Text)。

    (2) 在文本文件中写入下面 8 行):

    This
    text
    comes
    from
    a
    different
    text
    file.
    
    Notepad++ 中的文本文件 another_file_to_read.txt

    在这里插入图片描述

    (3) 将文件保存在桌面上,文件名为 another_file_to_read.txt。

    (4) 将下面几行代码添加到 first_script.py 的下方:

    # 读取多个文本文件
    print("Output #145:")
    inputPath = sys.argv[1]
    for input_file in glob.glob(os.path.join(inputPath,'*.txt')):
        with open(input_file, 'r', newline='') as filereader:
            for row in filereader:
                print("{}".format(row.strip()))
    

    这个示例中的第一行代码与读取单个文本文件示例中的代码非常相似,只是在这个示例中,要提供一个目录路径名,而不是一个文件路径名。这里,要提供的路径指向包含了两个文本文件的目录。

    第二行代码是 for 循环,使用 os.path.join 函数和 glob.glob 函数来找出符合特定模式的某个文件夹下面的所有文件。指向这个文件夹的路径包含在变量 inputpath 中,这个变量将在命令行中被提供。os.path.join 函数将这个文件夹路径和这个文件夹中所有符合特定模式的文件名连接起来,这种特定模式可以由 glob.glob 函数扩展。这个示例使用的是模式 *.txt 来匹配由 .txt 结尾的所有文件名。因为这是一个 for 循环,所以这行中其余的代码你应该很熟悉了。input_file 是一个占位符,表示由 glob.glob 函数生成的列表中的每个文件。这行代码的意义就是:对于匹配文件列表中的每个文件,做下面的操作……

    余下的代码和读取单个文件的代码非常相似。以只读方式打开 input_file 变量,然后创建一个 filereader 对象。对于 filereader 对象中的每一行,除去行两端的空格、制表符和换行符,然后打印这一行。

    (5) 重新保存 first _script.py。

    (6) 要读取这些文本文件,输入以下代码,如图所示,然后按回车键:

    python first_script.py "C:\Users\[Your Name]\Desktop"
    
    Python 脚本和指向包含文本文件的桌面文件夹的路径

    在这里插入图片描述

    这样,你就在 Python 中读取了多个文本文件。你会看到以下内容被打印到屏幕上,在以前的输出之后:

    This
    text
    comes
    from
    a
    different
    text
    file.
    I'm
    already
    much
    better
    at
    Python.
    
    first_script.py 的输出,在命令行窗口中处理多个文本文件

    学会这项技术的一个巨大好处是它可以规模化扩展。这个示例只是处理两个文本文件,但是它可以轻松地扩展为处理几十、几百或者几千甚至更多的文件。学习了如何使用 glob.glob 函数,仅花费手动处理的一小部分时间,就可以处理非常非常多的文件。

    写入文本文件

    迄今为止,大多数示例还是使用 print 语句将输出发送到命令行窗口或终端窗口。当你在调试程序,或者在检查输出的准确度时,将输出打印到屏幕上是有意义的。但是,在很多情况下,只要你能确定输出是正确的,就会需要将输出写入文件,以进行更进一步的分析、报告和存储。

    Python 提供了两种简单的方法来将输出写入文本文件和分隔符文件。write 方法可将单个字符串写入一个文件,writelines 方法可将一系列字符串写入一个文件。下面的两个示例使用 range 函数和 len 函数跟踪一个列表中的索引值,以将分隔符放在各个列表值之间,并在最后一个列表值后面放上一个换行符。

    向first_script.py添加代码

    (1) 将下面各行代码添加到 first_script.py 的底部:

    # 写入文件
    # 写入一个文本文件
    my_letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
    max_index = len(my_letters)
    output_file = sys.argv[1]
    filewriter = open(output_file, 'w')
    for index_value in range(len(my_letters)):
        if index_value < (max_index-1):
            filewriter.write(my_letters[index_value]+'\t')
        else:
            filewriter.write(my_letters[index_value]+'\n')
    filewriter.close()
    print "Output #146: Output written to file"
    

    在这个例子中,变量 my_letters 是一个字符串列表。这里想把这些字母打印到一个文本文件中,每个字母之间用制表符分隔。这个示例中的难点是确保在字母之间以制表符分隔,并在最后一个字母后面放上一个换行符(不是制表符)。

    为了知道什么时候到达最后一个字母,你需要跟踪列表中字母的索引值。len 函数用来计算出列表中字母的数量,所以 max_index 等于 10。在命令行窗口或终端窗口中,再次使用 sys.argv[1] 来在命令行中提供输出文件的路径名。创建一个文件对象 filewriter,但是打开方式不是只读,而是通过 w(可写)的方式打开。使用 for 循环在列表 my_letters 的各个值之间进行迭代,并使用 range 函数和 len 函数跟踪列表中各个字母的索引值。

    if-else 语句可以使你对列表中的最后一个字母做出与前面那些字母不同的处理。if-else 语句是这样工作的:my_letters 包含 10 个元素,但是索引从 0 开始,所以各个字母的索引值分别是 0、1、2、3、4、5、6、7、8、9。因此,my_letters[0] 是 a,my_letters[9] 是 j。if 代码块判断索引值 x 是否小于 9,max_index - 1 或者是 10 - 1 = 9。直到列表中的最后一个字母,这个条件才为 True。因此,if 代码块的意义是:一直到列表中的最后一个字母,都向输出文件中写入字母,并在字母后面加一个制表符。当你到达了列表中的最后一个字母时,这个字母的索引值为 9,不大于 9,所以 if 代码块判断为 False,就执行 else 代码块。else 代码块中的 write 语句的意义是:向输出文件中写入最后一个字母,并在后面加一个换行符。

    (2) 将前面读取多个文件的代码注释掉。

    为了看到这些代码是如何工作的,这里需要写入一个文件然后查看输出。因为你又一次使用了 argv[1] 来确定输出文件的路径名,所以需要将前面的 glob 代码删除或注释掉,这样就可以使用 argv[1] 来确定输出文件了。如果选择注释掉前面的 glob 代码,那么 first_script.py 应该如下所示:

    ## 读取多个文本文件
    #print("Output #145:")
    #inputPath = sys.argv[1]
    #for input_file in glob.glob(os.path.join(inputPath,'*.txt')):
    #    with open(input_file, 'r', newline='') as #filereader:
    #        for row in filereader:
    #            print("{}".format(row.strip()))
    

    (3) 重新保存 first_script.py。

    (4) 要写入一个文本文件,输入下面的代码,如图所示,然后按回车键:

    python first_script.py "C:\Users\[Your Name]\Desktop\write_to_file.txt"
    
    应该在命令行窗口中输入的 Python 脚本、文件路径和输出文件名

    在这里插入图片描述

    (5) 打开输出文件 write_to_file.txt。

    这样,你就使用 Python 将输出写入了一个文本文件。在完成这些步骤之后,你不会在屏幕上看到新的输出;但是,如果你将所有打开的窗口最小化,就会看到桌面上有一个新的文本文件,名为 write_to_file.txt。这个文件中应该包含了列表 my_letters 中的字母,以制表符隔开,最后有一个换行符,如图所示。

    输出文件 write_to_file.txt,由 first_script.py 在桌面上创建

    在这里插入图片描述

    下一个示例与这个很相似,只是它演示了如何使用 str 函数来将元素转换为字符串,以便使用 write 函数将其写入一个文件。它还演示了使用 ‘a’(追加)方式将输出追加到一个已经存在的输出文件末尾的方法。

    写入CSV文件

    (1) 将下列各行代码添加到 first_script.py 的底部:

    # 写入CSV文件
    my_numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    max_index = len(my_numbers)
    output_file = sys.argv[1]
    filewriter = open(output_file, 'a')
    for index_value in range(len(my_numbers)):
        if index_value < (max_index-1):
            filewriter.write(str(my_numbers[index_value])+',')
        else:
            filewriter.write(str(my_numbers[index_value])+'\n')
    filewriter.close()
    print "Output #147: Output appended to file"
    

    这个示例与前面的示例非常相似,但是它说明了如何向已经存在的输出文件中追加内容,以及如何将列表中的非字符串数据转换成字符串,以便可以使用 write 函数来写入文件。在这个示例中,列表中的元素是整数。write 函数处理的是字符串,所以在你使用 write 函数将其写入输出文件之前,需要使用 str 函数将非字符串数据转换成字符串。

    在使用 for 循环进行第一次迭代时,str 函数会向输出文件中写入一个 0,然后写入一个逗号。以这种方式继续写入列表中的其他数值,直到列表中的最后一个数值,这时执行 else 代码块,将最后一个数值写入输出文件,并在后面加上一个换行符,而不是逗号。

    请注意在打开文件对象 filewriter 时,使用的是追加模式(‘a’),而不是可写模式(‘w’)。如果在命令行中提供了同样的输出文件名,那么这段代码的输出会被追加到 write_to_file.txt 文件中,在以前写入文件的内容之后。相反,如果使用可写方式打开 filewriter 对象,那么以前的输出会被删除,write_to_file.txt 文件中只会出现这段代码的输出。你会在本书后面的章节中看到使用追加方式打开文件的作用,这时你要处理多个文件,并将其中所有的数据追加到一个连接文件中。

    (2) 重新保存 first_script.py。

    (3) 要向文本文件中追加数据,输入以下命令然后按回车键:

    python first_script.py "C:\Users\[Your Name]\Desktop\write_to_file.txt"
    

    (4) 打开输出文件 write_to_file.txt。

    这样,你就使用 Python 向文本文件中写入和追加了数据。在完成这些步骤之后,你不会在屏幕上看到新的输出;但是,如果你打开了 write_to_file.txt 文件,会看到文件中出现了新的一行,行中包括了 my_numbers 中的数值,以逗号隔开,并在末尾有一个换行符,如图 所示。

    输出文件 write_to_file.txt,由 first_script.py 追加了信息

    在这里插入图片描述

    最后,这个示例演示了一个写入 CSV 文件的有效方法。实际上,在前面的例子中,你将由制表符分隔的数据写入了输出文件,如果将制表符改为逗号,并且将输出文件命名为 write_to_file.csv 而不是 write_to_file.txt 的话,就可以创建一个 CSV 文件。

    推荐参考学习书籍:Python数据分析基础

    展开全文
  • 我有一个文本文件需要导入 Access ,但是文本文件中有一列数据原本是文本,但是导入数据库后自动变成了“双精度”类型,我该如何让各个字段按我需要的数据类型生成哪? 如何让 ACCESS 按照我规定的构架、规格从...
     
    

    问题:

      我有一个文本文件需要导入 Access ,但是文本文件中有一列数据原本是文本,但是导入数据库后自动变成了“双精度”类型,我该如何让各个字段按我需要的数据类型生成哪?
    如何让 ACCESS 按照我规定的构架、规格从文本文件、XLS文档中导入数据?

     

    方法一:

      Access 本身就有导入导出向导,里面得高级选项中就可以自定义需要导入数据得详细规格。

    操作步骤如下:

    菜单 -> 文件 -> 获取外部数据 -> 导入(或者是“链接表”) -> 选择你需要得格式得文件 -> 高级

    菜单 -> 文件 -> 获取外部数据 -> 导入(或者是“链接表”)
    图片如下:
    按此在新窗口浏览图片

    选择你需要得格式得文件
    图片如下:
    按此在新窗口浏览图片

    点击“高级”按钮
    图片如下:
    按此在新窗口浏览图片

    在“导入规格”中定义字段规格,定义完成后按“保存”按钮
    图片如下:
    按此在新窗口浏览图片

    选择合适得规格名
    图片如下:
    按此在新窗口浏览图片

    定义完成后得字段规格存储在 MSysIMEXColumns 以及 MSysIMEXSpecs 表中
    图片如下:
    按此在新窗口浏览图片

    完成上述操作后,以后就不用再重新定义了,可以使用以下语句链接或者导入文本文件

    DoCmd.TransferText acLinkDelim, "list1 导入规格", "list1", "C:\list1.txt"
    DoCmd.TransferText acImportDelim, "list1 导入规格", "list1", "C:\list1.txt"

    关于 TransferText 方法请参考以下资料(摘自 Access XP 帮助)

    TransferText 方法

    在 Visual Basic 中,TransferText 方法执行 TransferText 操作。

    expression.TransferText(TransferType, SpecificationName, TableName, FileName, HasFieldNames, HTMLTableName, CodePage)
    expression   必需。返回“Applies To”列表中的一个对象的表达式。

    TransferType  可选 AcTextTransferType。

    AcTextTransferType 可以是下列 AcTextTransferType 常量之一: 
    acExportDelim 
    acExportFixed 
    acExportHTML 
    acExportMerge 
    acImportDelim 默认 
    acImportFixed 
    acImportHTML 
    acLinkDelim 
    acLinkFixed 
    acLinkHTML 
    如果将该参数留空,则采用默认常量 (acImportDelim)。

    注意   可以链接到文本文件或 HTML 文件中的数据上,但数据在 Microsoft Access 中是只读的。

    在 Microsoft Access 项目(Microsoft Access 项目:与 Microsoft SQL Server 数据库连接且用于创建客户/服务器应用程序的 Access 文件。项目文件中不包含任何数据或基于数据定义的对象(如表或视图)。) (.adp) 中仅支持 acImportDelim、acImportFixed、acExportDelim、acExportFixed 或 acExportMerge 转换类型。
     

    SpecificationName  可选 Variant 型。字符串表达式(字符串表达式:任一求值为一列连续字符的表达式。表达式的元素可以包括:返回字符串或字符串 Variant (VarType 8) 的函数;字符串字面值、常量、变量或 Variant。),表示在当前数据库中创建并保存的导入或导出规格的名称。对于固定长度的文本文件, 必须指定参数或使用 schema.ini 文件,该文件还必须保存在导入、链接或导出的文本文件的同一个文件夹中。若要创建一个方案文件, 可使用文本导入/导出向导创建此文件。对于分隔的文本文件和 Microsoft Word 邮件合并数据文件,可以将该参数留空,以便选择默认的导入/导出规格。

    TableName  可选 Variant 型。字符串表达式,表示要向其导入文本数据、从中导出文本数据或链接文本数据的 Microsoft Access 表的名称,或者要将其结果导出到文本文件的 Microsoft Access 查询(查询:有关表中所存数据的问题,或要对数据执行操作的请求。查询可以将多个表中的数据放在一起,以作为窗体、报表或数据访问页的数据源。)的名称。

    FileName  可选 Variant 型。字符串表达式,表示要从中导入、导出到或链接到的文本文件的完整名称(包括路径)。

    HasFieldNames  可选 Variant 型。使用 True (-1) 可以在导入、导出或链接时,使用文本文件中的第一行作为字段名。使用 False (0) 可以将文本文件中的第一行看成普通数据。如果将该参数留空,则采用默认值 (False)。该参数将被 Microsoft Word 邮件合并数据文件忽略,这些文件的第一行中必须包含字段名。

    HTMLTableNam  可选 Variant 型。字符串表达式,表示要导入或链接的 HTML 文件中的表或列表的名称。除非 transfertype 参数设为 acImportHTML 或 acLinkHTML,否则该参数将被忽略。如果将该参数留空,则导入或链接 HTML 文件中的第一个表或列表。如果 HTML 文件中存在 <CAPTION> 标记,则 HTML 文件的表或列表名称取决于该标记指定的文本。如果没有 <CAPTION> 标记,则名称由 <TITLE> 标记指定的文本决定。如果有多个表或列表具有相同的名称,则 Microsoft Access 将通过给每个表或列表名称结尾添加一个数字,如“雇员1”和“雇员2”来区分它们。

    CodePage  可选 Variant 型。Long(Long 数据类型:存储大型整数的基础数据类型。Long 变量存储为 32 位数的值,范围介于 2,147,483,648 到 2,147,483,647 之间。) 型值,用于标识代码页的字符集。

    说明
    有关该操作及其参数如何使用的详细信息,请参阅该操作的主题。

    语法中的可选参数允许留空,但是必须包含参数的逗号。如果将位于末端的参数留空,则在指定的最后一个参数后面不需使用逗号。

    注意   通过设置 Recordset 对象的 ActiveConnection 属性,也可使用 ActiveX 数据对象 (ADO)(数据访问对象 (DAO):一种数据访问接口,与 Microsoft Jet 和符合 ODBC 的数据源通讯,以连接到、检索、操作和更新数据和数据库结构。) 来创建链接。

    示例
    下面的示例使用规范“标准输出”,从 Microsoft Access 表“外部报表” 将数据导出到带有分隔符的文本文件 April.doc 中:

    DoCmd.TransferText acExportDelim, "Standard Output", _
        "External Report", "C:\Txtfiles\April.doc"



     

    方法二:

      用 Schema.ini 文件也可以达到要求。

    作用:Schema.ini用于提供文本文件中记录的构架信息。每个 Schema.ini 项都用于指定表的五个特征之一:
    1、文本文件名
    2、文件格式
    3、字段名、字段长度、字段类型
    4、字符集
    5、特别数据类型转换

    指定文件名
    文件名要用方括号括起来,例如如果要对 Sample.txt 使用数据构架信息文件,那么它的对应的项应该是

    [Sample.txt]


    指定文件格式

    格式说明 表格式 Schema.ini 格式描述
    Tab 制表符分隔 文件中的字段用制表符分隔 Format=TabDelimited
    CSV 分隔 文件中的字段用逗号来分隔 Format=CSVDelimited
    自定义分隔 文件中的字段可以用任何字符来分隔,所有的字符都可以用来分隔,包括空格,但是双引号 ( " ) 除外

    Format=Delimited(自定义分隔符)

    - 或者没有分隔符 -

    Format=Delimited( )

    固定宽度 文件中的字段为固定长度 cg1留言,经测试,参数为:Format=FixedLength


    指定字段

    你可以有两种方法在一个字符分隔的文本文件中指定字段名

    1、在文本文件中的第一行包含字段名,并且设置 ColNameHeader 为 True 。
    2、用数字编号指定每一列并且指定每一列的名字以及数据类型

    你必须用数字编号指定每一列并且指定每一列的名字、数据类型以及长度(在固定长度分隔的文本文件中需要指定长度)

    注意,设定了 ColNameHeader 选项,在 Schema.ini 中 Windows 注册时会忽略 FirstRowHasNames 选项。

    你也可以指定字段的数据类型,使用 MaxScanRows 选项用来指定在确定列的数据类型时要扫描多少行数据。设置 MaxScanRows 为 0 将扫描整个文件。

    如果文本文件第一行包含字段名,并且要扫描整个文件,改项目就要定义如下:

    ColNameHeader=True
    MaxScanRows=0

    接下来的项目用来指定表中的字段,使用列编号(Coln)选项来指定列。字段长度在“固定分隔文本文件中”是必填项目,在“字符分隔文本文件”中是可选项目。
    示例:定义 2 个字段,CustomerNumber 是长度为 10 的文本字段、CustomerName 是长度为 30 的文本字段。

    Col1=CustomerNumber Text Width 10
    Col2=CustomerName Text Width 30

    语法如下:
    Col[I]n[/I]=[I]ColumnName[/I] type [Width #]

    参数解释如下:

    参数 说明
    ColumnName 文本,标识字段名,如果包含空格要用双引号括起来
    type

    数据类型包括:

    Microsoft Jet 数据类型:Bit Byte Short Long Currency Single Double DateTime Text Memo

    ODBC 数据类型: Char (same as Text) Float (same as Double) Integer (same as Short) LongChar (same as Memo) Date date format

    其中date format 是日期的格式字符串例如:Date YYYY-MM-DD

    Width 字符串的长度,后面的数字用来指定字段的长度(“固定分隔文本文件”为必填,“文字分隔文本文件”为可选)
    # 整形数字,标识字段长度

    指定字符集
    CharacterSet 项有两个选择:ANSI | OEM
    选择 ANSI 字符集用如下方法:

    CharacterSet=ANSI


    特别数据类型转换 
    特别数据类型转换主要是定义比如日期、货币型数据如何转换或者如何显示的,你可以参考下面这张表:

    选项 说明
    DateTimeFormat Can be set to a format string indicating dates and times. You should specify this entry if all date/time fields in the import/export are handled with the same format. All Microsoft Jet formats except A.M. and P.M. are supported. In the absence of a format string, the Windows Control Panel short date picture and time options are used.
    DecimalSymbol Can be set to any single character that is used to separate the integer from the fractional part of a number.
    NumberDigits Indicates the number of decimal digits in the fractional portion of a number.
    NumberLeadingZeros Specifies whether a decimal value less than 1 and greater than –1 should contain leading zeros; this value can either be False (no leading zeros) or True.
    CurrencySymbol Indicates the currency symbol to be used for currency values in the text file. Examples include the dollar sign ($) and Dm.
    CurrencyPosFormat Can be set to any of the following values:

    · Currency symbol prefix with no separation ($1)

    · Currency symbol suffix with no separation (1$)

    · Currency symbol prefix with one character separation ($ 1)

    · Currency symbol suffix with one character separation (1 $)

    CurrencyDigits Specifies the number of digits used for the fractional part of a currency amount.
    CurrencyNegFormat Can be one of the following values:

    · ($1)

    · –$1

    · $–1

    · $1–

    · (1$)

    · –1$

    · 1–$

    · 1$–

    · –1 $

    · –$ 1

    · 1 $–

    · $ 1–

    · $ –1

    · 1– $

    · ($ 1)

    · (1 $)

    This example shows the dollar sign, but you should replace it with the appropriate CurrencySymbol value in the actual program.

    CurrencyThousandSymbol Indicates the single-character symbol to be used for separating currency values in the text file by thousands.
    CurrencyDecimalSymbol Can be set to any single character that is used to separate the whole from the fractional part of a currency amount.

     


    下面给出一个简单的例子,假设有一个表Contacts.txt类似下面:

    姓名 单位 联系日期 
    王海 上海有机化学研究所 2002-1-1 
    罗炙 数字化机床研究院 2004-1-1 

    导入 Access 应该类似下面表格:

    姓名 单位 联系日期
    王海 上海有机化学研究所 2002-1-1
    罗炙 数字化机床研究院 2004-1-1


    那么 Schema.ini 则是类似下面的INI文件:

    [Contacts.txt]
    ColNameHeader=True
    format=Delimited(" ")
    MaxScanRows=0
    CharacterSet=ANSI
    Col1="姓名" Char Width 10
    Col2="单位" Char Width 9
    Col3="联系日期" Date Width 8

    注释如下:

    [Contacts.txt] ///文本文件名
    ColNameHeader=True ///带有表头
    format=Delimited( ) ///空格作为分隔符,如果是分号,请用format=Delimited(;) 来解决
    MaxScanRows=0 ///扫描整个文件
    CharacterSet=ANSI ///ANSI 字符集
    Col1="姓名" Char Width 10 ///字段1
    Col2="单位" Char Width 9 ///字段2
    Col3="联系日期" Date Width 8 ///字段3
    ///如果有更多字段可 Col4 .... ColN 

    注意,Schema.ini 必须和需要导入的文本文件在同一目录。

    此后,我们就可以利用下面的语句来导入数据了:

    CurrentProject.Connection.Execute "SELECT * INTO NewContact FROM [Text;FMT=Delimited;HDR=Yes;DATABASE=C:\;].[Contacts#txt];"

    注意,到 2000 格式的 MDB 为止,以下语句都会导致导入失败,应该是 Access 本身的问题:
    到 Access XP / access 2003 出现不知道是否已经解决该问题,大家可以在“评论”中告诉我测试结果。

    DoCmd.TransferText acImportFixed, , "Contacts", "C:\contacts.txt"

    或者
    DoCmd.TransferText acImportFixed, "C:\.ini", "Contacts", "C:\Documents.txt"


    错误消息为:

    运行时错误 '3625':
    文本文件规范 'c:schema.ini' 不存在。不能使用规范进行导入、导出或者链接。

    或者
    运行时错误 '2511':
    这个操作或方法需要一个 Specification Name 参数。

    另外,请参考:
    http://support.microsoft.com/default.aspx?scid=kb;en-us;241477

    这里还有个示例提供下载:
    http://access911.net/down/eg/importtext.rar

    展开全文
  • 本文说明 Microsoft Word 的“从任意文件中恢复文本”转换器以及如何使用它来恢复损坏的文档。什么是“从任意文件中恢复文本”转换器? “从任意文件中恢复文本”转换器让您能够从任意文件中提取文本。该文件不...

    本文说明 Microsoft Word 中的“从任意文件中恢复文本”转换器以及如何使用它来恢复损坏的文档。

    什么是“从任意文件中恢复文本”转换器?

    “从任意文件中恢复文本”转换器让您能够从任意文件中提取文本。该文件不一定必须是 Word 文档。

    使用“从任意文件中恢复文本”转换器会丢失什么内容?

    “从任意文件中恢复文本”转换器有其本身的局限性。文档格式以及任何不属于文本格式的内容都将丢失。不会转换图形、域、绘图对象等等。但是,页眉、页脚、脚注、尾注和字段文本作为简单文本被保留下来。

    我的文档已损坏:如何恢复其中的信息?

    注意 : 当您将“文件类型”框中的选定内容更改为“从任意文件中恢复文本”时,Word 将保留此设置并在您下一次打开文档时使用它。若要避免出现此行为,请在完成恢复损坏的文档后,将“文件类型”框重置为“Word 文档(*.doc)”或“Word 文档(*.docx)”。

    打开一个 Word 文档

    若要对 Word 文档使用“从任意文件中恢复文本”转换器,请按照下列步骤操作:
    1. 在 Microsoft Office Word 2007 中,单击 Office 按钮,然后单击“打开”。
    2. 在 Microsoft Office Word 2003 或 Microsoft Word 2002 中,单击“文件”菜单上的“打开”。
    3. 在“文件类型”框中,单击“从任意文件中恢复文本(*.*)”。
    4. 选择要从中恢复文本的文档。
    5. 单击“打开”。

    打开一个非 Word 文件

    若要对一个非 Word 文件使用“从任意文件中恢复文本”转换器,请按照下列步骤操作:

    1. 在 Word 2007 中,单击 Office 按钮,然后单击“Word 选项”。
    2. 单击“高级”选项卡,单击以选中“常规”下的“打开时确认文件格式转换”复选框,然后单击“确定”。
    3. 单击 Office 按钮,然后单击“打开”。
    4. 在“文件类型”框中,单击“从任意文件中恢复文本(*.*)”。
    5. 选择要从中恢复文本的文档。
    6. 单击“打开”。

     

    1. 在 Word 2003 或 Word 2002 中的“工具”菜单上,单击“选项”。
    2. 单击“常规”选项卡。
    3. 单击以选中“打开时确认转换”复选框,然后单击“确定”。
    4. 在“文件”菜单上,单击“打开”。
    5. 在“文件类型”框中,单击“从任意文件中恢复文本”。
    6. 选择要从中恢复文本的文档。
    7. 单击“打开”。

    Word 将从该文档中转换并恢复所有文本。

    查看本文原始连接:http://support.microsoft.com/kb/290946/zh-cn

    展开全文
  • C语言文本文件实现局部修改

    万次阅读 多人点赞 2018-06-17 13:23:59
    前言:以往进行文件操作时,都是以链表(变量)作为用户所见数据与文件数据之间的桥梁。用户改变数据时,先改变链表(变量)的数据,然后直接将...下面介绍一下文本文件的局部修改(覆盖写入)。当然,不进行覆盖...

    前言:以往进行文件操作时,都是以链表(变量)作为用户所见数据与文件数据之间的桥梁。用户改变数据时,先改变链表(变量)中的数据,然后直接将整个链表重新写入文件,以做到“实时同步”,非正常退出程序一般数据也不会丢失。但是数据量很大时,微小的改动就要重写整个文件,浪费很多计算资源。但是在控制台程序中,没有C语言做不到的事,只有C语言不擅长的事。下面介绍一下文本文件的局部修改(覆盖写入)。当然,不进行覆盖的话即实现了插入


    先来回顾一下二进制文件(任意读写文件、随机读写文件)的局部修改
    下面这段程序向man.dat文件中写入三个人的名字,年龄

    typedef struct {
    	char name[20];
    	int age;
    } Data;
    
    int main(){
    	Data man[3];
    	for(int i = 0;i<3;i++){
    		printf("please input %c's name:",i+'A');
    		scanf("%s",man[i].name);
    		printf("please input %c's age:",i+'A');
    		scanf("%d",&man[i].age);
    	}
    	FILE *fp = fopen("man.dat","wb");
    	fwrite(man,sizeof(Data),3,fp);
    	fclose(fp);
    	return 0;
    }
    

    下面这段程序进行了二进制文件的任意读写

    typedef struct {
    	char name[20];
    	int age;
    } Data;
    
    int main(){
    	FILE *fp;
    	char name[100];
    	printf("请输入想要修改的人的名字:");
    	scanf("%s",name);
    	Data data;
    	fp = fopen("man.dat","r+");
    	while(fread(&data,sizeof(Data),1,fp)==1){
    		if(strcmp(data.name,name)==0){找到修改目标 
    			printf("请输入新的名字:");
    			scanf("%s",name);
    			strcpy(data.name,name);修改变量data的name,同样这里也可以修改age 
    			fseek(fp,-sizeof(Data),SEEK_CUR);指针移至修改目标前 
    			fwrite(&data,sizeof(Data),1,fp);写入新的data覆盖原data 
    			printf("修改成功\n"); 
    			break;
    		}
    	}
    	fclose(fp); 
    	
    	puts("开始读取"); 
    	Data test;
    	fp = fopen("man.dat","r+");
    	while(fread(&test,sizeof(Data),1,fp)==1)
    		printf("%s %d\n",test.name,test.age);
    	return 0;
    } 
    

    文本文件局部修改示例程序在文章末尾

    前提条件

    • 待修改数据的数据长度最好已知
    • 修改后的数据长度要比原来小或相同,最好相同
    • 具有写入权限,文件打开方式为**r+**等

    比如int类型的status字段表示该数据元素的使用状态,用1表示正在使用,0表示闲置。现在有改变这个状态的需求,那么这就非常符合本文所述的情况

    主要流程

    1.得到待修改的数据在文件中的位置
    2.将文件内部指针定位到该位置
    3.写入新数据到文件

    首先 我们对fscanf等函数的细节需要有一些了解

    • fscanf所读数据间若存在换行符则读取时文件指针会自动跳过换行符,
      而无需在格式化字符串中加上换行符,且换行符占两个字节(私以为是\r\n的缘故,ps:Windows环境下)
    • fscanf与scanf相似,数据间多余个空格(非格式化字符串间的空格)不造成读取影响
    • 文本文件又称ASCLL码文件,顾名思义我们可以计算出某些位置的字节数

    说明:本文所述偏移字节数为ASCLL文件中的字节数,即字符数

    得到待修改的数据在文件中的位置

    假设当前有data.txt内容为

    0 1 2
    3 4 5
    

    现在我们要得到5的位置

    int num;
    FILE *fp = fopen("data.txt","rt+");
    while(fscanf(fp,"%d",&num)!=EOF&&num!=5);
    读取后文件指针指向5的后面
    
    • 方法一

      long ftell( FILE *stream );发生错误返回-1

      利用ftell函数得到当前当前文件内部指针位置(相对文件首偏移字节数)
      long position = ftell(fp);
      position -= 待修改数据长度;  即得到要定位到的位置
      
    • 方法二

      int fgetpos( FILE *stream, fpos_t *position );fgetpos()函数保存给出的文件流(stream)的位置指针到给出的fpos_t类型的位置变量(pos)中.
      (fpos_t在stdio.h中定义,实质上是一种__int64).fgetpos()执行成功时返回0,失败时返回一个非零值

      利用fgetpos获得文件内部指针位置
      fpos_t pos;
      fgetpos(fp,&pos);
      pos -= 待修改数据长度;
      

    如果我们清晰的知道文件的存储结构,比如它存储的是大量相同的数据块(就像二进制文件那样),我们也可以遍历计数,然后计算出偏移字节数


    将文件内部指针定位到该位置

    //经试验,用于读取的文件指针无法用于写入
    通过上述方法得到需要的文件指针位置(偏移字节数)后
    接下来需要定位文件内部指针到该位置
    int fseek( FILE *stream, long offset, int origin );
    或者
    int fsetpos( FILE *stream, const fpos_t *position );

    • feesk
      其中,fseek函数中int origin参数的值应该是下列值其中之一

      名称 说明
      SEEK_SET(0) 从文件的开始处开始
      SEEK_CUR(1) 从当前位置开始
      SEEK_END(2) 从文件的结束处开始

      fessk从orign处开始,向后偏移offset个字节数,offset < 0 即向前移动
      offset 参数为 fgetpos获取到的fpos_t类型的pos也可,只需(long)pos

    • fsetpos
      fsetpos用于将文件内部指针定位到pos,同理pos也可由ftell得到并转换为fpos_t

    示例
    将上述data.txt中的5修改为0

    fseek(fp,position,0);/#0 == SEEK_SET  从文件首开始
    

    特别地你可以不需要用ftell获得偏移字节数

    fseek(fp,-待修改数值长度,SEEK_CUR);	从当前位置开始
    

    或者

    fsetpos(fp,&pos);
    //pos = (fpos_t) position;
    //fset(fp,pos);
    

    写入新的数据到文件

    fprintf照常写入就好,此时会覆盖原数据(注意换行符),但是此时要注意此时文件指针的位置,不要做多余的写入,新数据长度不足要考虑用空格覆盖原数据,由于fscanf格式化字符串的特点,再读入时空格可以忽略。或者根据存储方式与程序数据定义的特点进行适当的写入

    附上一些输入流操作函数
    rewind(FILE *stream);回滚指针到文件流首
    feof(FILE *stream);判断文件流是否到达文件尾,若到达返回一个非零值
    FILE *freopen( const char *fname, const char *mode, FILE *stream );给一个已存在的流再分配一个不同的文件和方式(mode).在调用本函数后,给出的文件流将会用mode(方式)指定的访问模式引用fname(文件名).
    freopen()的返回值是新的文件流,发生错误时返回NULL.
    fflush();

    示例

    下面的程序将三个结构体变量写入man.txt文件

    typedef struct{
    	char name[20];
    	int age;
    }Data; 
    
    int main(){
    	Data man[3];
    	for(int i = 0;i<3;i++){
    		printf("please input %c's name:",i+'A');
    		scanf("%s",man[i].name);
    		printf("please input %c's age:",i+'A');
    		scanf("%d",&man[i].age);
    	}
    	FILE *fp = fopen("man.txt","w");
    	for(int i =0;i<3;i++){
    		fprintf(fp,"%s %d\n",man[i].name,man[i].age);
    	}
    	fclose(fp); 
    	return 0;
    }
    

    运行及输入
    在这里插入图片描述

    创建的文件
    在这里插入图片描述

    现在我们来修改第二行的16这个数据
    修改程序如下

    typedef struct{
    	char name[20];
    	int age;
    }Data; 
    
    int main(){
    	FILE *fp = fopen("man.txt","r+");
    	Data data = {"liupeidong",16};//修改目标 
    	char name[100];
    	int age;
    	while(fscanf(fp,"%s%d",name,&age)!=EOF){
    		if(strcmp(name, data.name) == 0 && age == data.age){找到目标 
    		fseek(fp,-2,SEEK_CUR);回滚指针至16printf("please input new age:");
    		scanf("%d",&age);
    		fprintf(fp,"%d",age);覆盖写入
    		break; 
    		}
    	} 
    	fclose(fp);
    	return 0;
    } 
    

    运行修改程序
    在这里插入图片描述

    我在Dev中打开了man.txt,然后使用程序修改了它,Dev的提醒
    在这里插入图片描述

    修改后的文件
    在这里插入图片描述


    2018/12/21更新

    展开全文
  • (一) 问题:我有一个文本文件需要导入 Access ,但是文本文件中有一列数据原本是文本,但是导入数据库后自动变成了“双精度”类型,我该如何让各个字段按我需要的数据类型生成哪?如何让 ACCESS 按照我规定的...
  • c#读取文本文件

    千次阅读 2008-05-17 16:35:00
    使用 System.IO 和 Visual C# .NET 读取文本文件在 Visual C# .NET 读取文本文件 打开和读取文件进行读取访问是输入/输出 (IO) 功能的一个非常重要的部分,即使您不需要写入到相关文件,也是如此。 本示例打开一个...
  • MATLAB03:数据类型文件读写

    万次阅读 多人点赞 2019-11-14 13:13:44
    文章目录MATLAB03:数据类型文件读取数据类型数值类型(numeric)字符串类型(char)结构体(structure)结构体的基本使用结构体的常用函数元胞数组(cell)元胞数组的基本使用元胞数组的常用函数高维元胞数组判断变量数据...
  • 常用的C/C++文本文件的读写函数

    万次阅读 2015-12-28 22:12:39
    文本文件的读写是算法研究和工程应用常见的功能模块。C和C++的标准库提供了多种文本文件的读写方法,我们一般都会掌握其中比较习惯使用的一种或几种方法。解决问题的方法不在多,而在精。经过在网上的资料搜索和...
  • MySql 导入txt文本文件数据1

    万次阅读 2012-08-21 15:51:52
    其实 的这个问题是mysql的一个核心问题,既mysql数据的备份和恢复 可以使用三种方式 1.使用sql语句导入导出 2.使用mysqldump 和mysqlimport 工具 3.直接copy 数据文件 既冷备份 说说的详细,就给积分,那 就...
  • Visual C++ 文件类型

    千次阅读 2014-12-19 09:59:42
    项目通常产生 EXE 或 DLL。 项目可以相互依赖;在生成过程,Visual C++ 环境在每个项目中和各项目间都要...Visual Studio 开发环境利用文件扩展名确定在生成过程如何处理文件内容。 文件扩展名 类型 内容  .asm
  • C++ 文本文件的读取和输出

    千次阅读 2018-05-06 17:25:26
    本文转载自xmh_free ...在C++,对文件的操作是通过stream的子类fstream来实现的。要用这种方式操作文件,就必须加入头文件fstream.h,也可以写成fstream。 文本文件 读操作 函数open的原型是*void open(con...
  •  这组命令以指定模式搜索文件,并通知用户在什么文件中搜索到与指定的模式匹配的字符串,并打印出所有包含该字符串的文本行,在该文本行的最前面是该行所在的文件名。grep命令一次只能搜索一个指定的模式;egrep...
  • 1、在Oracle PL/SQL输入缓冲开始命令,并指定输出的文件路径和文件名 spool d:\output.txt 2、在命令输入相应的SQL查询命令 select * from customer; ... 3、在命令行输入缓冲结果命令 ...
  • 文件后缀和相应的文件类型,打开方法参考大全  原帖:http://xidong.net/File001/File_4586.html 如果你不知怎样判断文件的后缀, 请参看: 什么是文件的后缀名?如果得知文件的后缀? 扩展名 文件类型 打开方式 ....
  • 在使用svn add 时提示: A (bin) templates/translate/screen/selectTransLang.vm请看官方文档的解释:当你第一次添加或者导入文件到Subversion时,Subversion会检测该文件是否是二进制文件。目前,Subversi...
  • 中文文本情感分类及情感分析资源大全

    万次阅读 多人点赞 2018-10-03 22:43:49
    本文主要是基于机器学习方法的中文文本情感分类,主要包括:使用开源的Markup处理程序对XML文件进行分析处理、中科院计算所开源的中文分词处理程序ICTCLAS对文本进行分词处理、去除停用词等文本预处理,在基于向量...
  • MIME类型是什么?包含哪些类型

    千次阅读 2019-08-23 17:15:49
    是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。 MIME类型有哪些? 常用Mime类型文件后缀 Mime类型 说明 .flv...
  • 本文分步介绍了用C#如何从文本文件 (.txt) 检索信息,然后使用 ArrayList ...在 Visual C# 2005 或 Visual C# .NET 读取文本文件 打开和读取文件进行读取访问是输入/输出 (IO) 功能的一个非常重要的部分,即使您不需
  • 掌握iOS8的动态文本

    千次阅读 2016-05-26 18:07:10
    原文链接 : Swift Programming 101: Mastering Dynamic Type in iOS 8原文作者 : Kevin McNeish译文出自 : ...译者 : kmyhy ...Apple声称鼓励第三方App能够支持动态文本。但是,如果你尝试在App
  • 文本类型是润乾默认的单元格类型,当单元格类型被设置成文本类型,会把单元格的字符、数字或表达式的计算结果都当成文本来处理,而对于文本有特殊要求时,使用该类型就不能满足我们的需求了,例如:在同一单元格...
  • SHGetFileInfo 获得文件类型图标

    千次阅读 2014-01-16 23:16:43
    Windows编程:Shell 编程 第四章 SHGetFileInfo() 以前,所有文件和目录都有一个确定的属性集:时间,日期,尺寸,以及表示‘只读的’,...现在,文件可以是任何Shell部件对象—不一定必须是文件系统的部件。 
  • [C/C++]C语言文件的操作方法

    万次阅读 2021-03-27 17:39:31
    文件类型:根据数据的组织形式,数据文件被称为文本文件或者二进制文件。(存储同样大小的数据,二进制文件大小小于文本文件原因如图) 文件缓冲区:ANSIC 标准采用“缓冲文件系统”处理的数据文件的,所谓缓冲...
  • 3D的OBJ文件格式详解

    万次阅读 2015-11-29 17:28:16
    http://www.cnblogs.com/slysky/p/4081307.html常见到的*.obj文件有两种:第一种是基于COFF(Common Object File Format)格式的OBJ文件(也称目标文件),这种格式用于编译应用程序;第二种是Alias|Wavefront公司推出的...
  • VB 实现中文文本的加密方法

    千次阅读 2009-09-08 12:32:00
    VB文本加密 特别设计到中文加密 让很多人费尽周折,经常会碰到解密中文出现乱码的...吴业福 本文介绍了在VB6实现、英文文本加、解密的技术细节。文中深入地探讨了VB6汉字加、解密的原理、散列函数的构造方案,在
  • 客户端以及服务器指定使用适合的MIME-type内容类型。 HTTP是无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次...
  • 文章目录一、背景与环境搭建二、文本检测与识别 一、背景与环境搭建 OpenCV的文本识别流程: OpenCV EAST 文本检测器执行文本检测, 我们提取出每个文本 ROI 并将其输入 Tesseract,从而构建完整的 OpenCV OCR...
  • 它按lpstrFilter指定的次序显示在文件类型组合框。 如果lpstrFilter是NULL,对话框不能显示任何过滤器。 lpstrCustomFilter 指向一个静态缓冲,它包含了一对以空字符结束的过滤器字符串,这个字符串是为了...
  • .obj文件格式与.mtl文件格式

    万次阅读 多人点赞 2015-07-07 17:55:23
    最近在学习obj文件格式,上网查了些资料,很难找到比较全面的文章,尤其是对.mtl文件的说明甚少。今天把最近搜索的资料整合了一下。这里的obj文件格式指的是Wavefront...OBJ文件是一种文本文件格式,这就意味着你可以
  • ACCESS数据库的数据类型

    千次阅读 2012-12-30 17:35:56
    使用 DataType 属性可以指定保存在表字段数据的类型。每一字段只能包含单一数据类型的数据。 设置 DataType 属性使用下列设置: 设置 数据类型 大小 文本 (默认值)文本文本和数字的组合,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 86,386
精华内容 34,554
关键字:

下列文件中属于文本类型的是