file read write

文件 file

  文件是用于数据存储的单位

  文件通常用来长期存储数据

  文件中的数据是以字节为单位进行顺序存储的

 

文件的操作流程

  1. 打开文件

  2. 读/写文件

  3. 关闭文件

    注: 任何的操作系统,同一个应用程序同时打开文件的数量有最大数限制,所以在用完文件后需要关闭

 

文件的打开函数open

  open(file, mode='rt')  用于打开一个文件,返回此文件流对象,如果打开文件失败,则会触发OSError错误

 

文件的关闭方法:

  F.close()    关闭文件,释放系统资源

 

示例见:

  file_open.py

 

 

文本文件操作模式

   模式字符:

     't'  (默认)

   1. 默认文件中存储的数据为字符数据,以行为单位分隔,在 python 内部统一用'\n'作为换行符进行分隔

   2. 对文本文件的读写需要用字符串(str)进行读取和写入数据

 

各操作系统的换行符:

  Linux换行符:         '\n'

  Windows换行符:       '\r\n'

  旧的Macintosh换行符 : '\r'

  新的Mac OS换行符:     '\n'

说明:

  在文件文件模式下,各操作系统的换行符在读入python内部时转换为字符'\n'

 

文件的迭代读取:

   open返回的文件流对象是可迭代对象

 

   示例:

    f = open('myfile.txt')

    for line in f:

        print(line)

 

文本文件的写操作:

  写文件模式有:

     'w'

     'x'

     'a'

    详见:

      python_base_docs_html/文件.html

  示例见:

file_write_text.py

标准输入输出文件

sys.stain   标准输入文件

   ctrl+d  输入文本结束

sys.stout   标准输出文件

sys.stderr   标准错误输出文件

  模块名:sys

二进制文件操作

  默认的文件中存储的都是以字节为单位的数据,通常有人为规则的格式,需要以字节为单位进行读写

 

F.read() 的返回类型:

   1. 对于文本模式('t')打开的文件,返回字符串(str)

   2. 对于二进制模式('b')打开的文件,返回字节串(bytes)

 二进制通常只用read 不用readline

F.write(x)

   1. 对于文本模式,x必须为字符串

   2. 对于二进制模式,x必须为字节串

F.tell

   返回当前的读写位置

F.seek  设置读写位置

   F.seek(偏移量)

大于0的数代表向文件末尾移动的字节数

小于0的数代表向文件末尾移动的字节数

相对位置

0代表从文件头开始偏移

1代表从当前读写位置开始偏移

2代表从文件尾开始偏移

以十六进制方式查看文件内容的命令:

   $ xxd 文件名

示例见:

  file_write_binary.py

  file_read_binary.py

F.seek() 方法

  F.seek(偏移量, 相对位置)

    偏移量:

        大于0的数代表向文件尾方向移动

        小于0代表向文件头方向移动

    相对位置:

      0 代表从文件头开始偏移

      1 代表从当前位置开始偏移

      2 代表从文件尾开始偏移

  作用:

    改变当前文件的读写位置

 

F.tell() 方法:

  作用:

    返回当前文件读写位置

 

小结:

文件操作的两种模式:

   'b'  二进制模式

   't'  文本模式

 

文件操作:

  读 read /readline/readlines

  写 write /writelines

汉字编码:

  问题:

    十个汉字占多少个字节

 国标系列:

    GB18030(二字节或四字节编码,共27533个汉字)

      GBK(二字节编码,共21003个汉字)

        GB2312(二字节编码,共个6763汉字)

    (Windows 常用)

  国际标准:

      UNICODE32(UNICODE16)  <---> UTF-8

    (Linux, Mac OS X, IOS, Android等常用)

 

说明:

  python3的字符串内部都是用UNICODE来存储字符的

 

 

python 编码(encode) 字符串:

   'gb2312'

   'gbk'

   'gb18030'

   'utf-8'

   'ascii'

 

 

编码注释:

  在python 源文件第一行或第二行写入如下内容是告诉解释执行器此文件的编码类型是什么

  如:

    # -*- coding: gbk -*-

    # 设置源文件编码格式为gbk

  或

    # -*- coding: utf-8 -*-

    # 设置源文件编码格式为utf-8

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
// zuoye07.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include "zuoye07.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif DWORD BufferSize=1024; char buf[1024]; / // The one and only application object CWinApp theApp; using namespace std; void FileReadWrite_NoBuffer(char*source,char*destination); int _tmain(int argc,TCHAR*angv[],TCHAR*envp[]) { int nRetCode=0; printf("Call FileReadWrite_NoBuffer!\n"); //调用FileReadWrite_NoBuffer(char*source,char*destination)函数 FileReadWrite_NoBuffer("source.txt","nobuffer.txt"); return nRetCode; } void FileReadWrite_NoBuffer(char*source,char*destination) { HANDLE handle_src,handle_dst; DWORD NumberOfByteWrite; bool cycle; char*buffer; buffer=buf; //创建文件source.txt handle_src=CreateFile(source, GENERIC_READ, 0, NULL, OPEN_ALWAYS, FILE_FLAG_NO_BUFFERING, NULL); //创建文件nobuffer.txt handle_dst=CreateFile(destination, GENERIC_WRITE, NULL, NULL, OPEN_ALWAYS, NULL, NULL); //判断文件是否创建失败,若失败打印输出提示信息并退出 if(handle_src==INVALID_HANDLE_VALUE || handle_dst==INVALID_HANDLE_VALUE) { printf("File Create Fail!\n"); exit(1); } cycle=true; while(cycle) { NumberOfByteWrite=BufferSize; //读取文件source.txt if(!ReadFile(handle_src,buffer,NumberOfByteWrite,&NumberOfByteWrite,NULL)) { //读取文件source.txt失败 printf("Read File Error!%d\n",GetLastError()); exit(1); } if(NumberOfByteWrite<BufferSize)cycle=false; //写入文件nobuffer.txt if(!WriteFile(handle_dst,buffer,NumberOfByteWrite,&NumberOfByteWrite,NULL)) { //写入文件nobuffer.txt失败 printf("Write File Error!%d\n",GetLastError()); exit(1); } } //关闭文件句柄(source.txt,nobuffer.txt) CloseHandle(handle_src); CloseHandle(handle_dst); }
最新发布
06-09

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值