• 【Python】文件读写操作


    Python的文件读写有点类似php的文件读写。php的文件读写已经在《【php】让记事本成为你调控变量的控制台》(点击打开链接)说过了,以下用一个小样例说明Python的文件读写。

    在F盘原本是没有f:你好.txt这个文件的,我们要把用户在Python控制台输入的内容,搞到这个文件上去。本程序在Eclipse下的Pydev编译通过没有乱码。Windows控制台cmd的乱码问题请參考《【Python】遍历某文件夹下的全部文件夹与文件的路径、输出中文乱码问题》(点击打开链接)。程序代码例如以下:

    #-*-coding:utf-8-*-
    import os;
    #写操作
    fileName="f:你好.txt"
    fileContent=raw_input("你输入的内容将会追加到"+fileName);
    fp=open(fileName.decode('utf-8').encode('gbk'),"a+");
    fp.write(fileContent);
    print "你输入的内容:"+fileContent;
    print "已追加写入至:"+fileName;
    fp.close();
    print ;
    #读操作
    fileSize=os.path.getsize(fileName.decode('utf-8').encode('gbk'));
    fp=open(fileName.decode('utf-8').encode('gbk'),"a+");
    print "fileName如今的文件大小为:"+str(fileSize)+"b";
    print "如今"+fileName+"的内容为:"
    print fp.read(fileSize).decode('utf-8');
    fp.close();

    执行效果例如以下:


    这里,主要说明几个文件操作的方法:

    1、系统的固有类OS能够获取文件大小:os.path.getsize(filename),当中filename是路径。


    能够看到上面的路径被我通过.decode('utf-8').encode('gbk')先编码为utf-8,再解码为gbk,用来适应系统的编码方式,否则会出现乱码。

    主要是系统对于文件名称的处理与Python对于文件名称的处理的编码不一致。即使你在开头放了#-*-coding:utf-8-*-

    然而,对于文件内容的处理却不用如此。

    Python的编码就是奇奇怪怪的

    2、open方法第二个參数代码文件的读取的方式。

    尽管Python与C语言一样,提供的读取方法相同有a+,w+,r+三大类。

    w。以写方式打开,
    a。以追加模式打开(从EOF開始,必要时创建新文件)
    r+,以读写模式打开
    w+,以读写模式打开(參见w)
    a+,以读写模式打开(參见a)
    rb,以二进制读模式打开
    wb,以二进制写模式打开(參见w)
    ab,以二进制追加模式打开(參见a)
    rb+。以二进制读写模式打开(參见r+)
    wb+,以二进制读写模式打开(參见w+)
    ab+,以二进制读写模式打开(參见a+)

    可是,经历亲自測试,发现不管是读写操作。都用a+则不会出错,也不知道为什么。反正php是这样玩。我在Python试试,一開始用r+去读文件老不行,结果统一用a+却能够了。很奇怪。

    3、最后,全部编程语言都一样,不管是文件也好、数据库也好。人走带门,自行补上关闭连接的方法。都是默认不关闭~

  • 相关阅读:
    libnet.h no such file or directory 规格严格
    postgresql通用赋权管理 规格严格
    PostgreSQL的shared_buffers和系统OS cache的关系 规格严格
    Redis使用命令 规格严格
    no module named pytz(pycharm) 规格严格
    安装postgresql报错:Requires: llvmtoolset7clang >= 4.0.1 规格严格
    解决:Caused by: java.lang.ClassNotFoundException: org.springframework.core.metrics.ApplicationStartup 规格严格
    libpqfe.h:没有那个文件或目录 规格严格
    Centos7 安装 PostgreSql 14 数据库 和 timescaledb 时序库 规格严格
    PostgreSQL Primer for Busy People 规格严格
  • 原文地址:https://www.cnblogs.com/yfceshi/p/7388906.html
Copyright © 2020-2023  润新知