首页 > 其他分享 >06-文件操作

06-文件操作

时间:2023-12-18 11:11:26浏览次数:19  
标签:文件 06 src dst fd close 操作 os

文件

python 中文件以两种方式存在,第一种是文本格式,文本格式是人类可阅读的格式,另一种格式是二进制。二进制一般需要配合其他的软件进行使用。

python 打开文件的方式类似C语言的方式,以读模式、写模式、读写模式、二进制模式等。

文件的四个基本操作:打开文件、读文件、写文件、关闭文件。

open
read
write
close

open 为了获取文件操作符,读写关闭都需要文件操作符进行使用。

read 如果不限制读取的数量,则会将文件中所有内容读取出来。如果执行了一次read,则再次执行read,不会读取内容,因为文件指针此时已经移动到了文件的末尾。

文件访问方式:

r, w, a
r+, w+, a+
a是追加模式,自动会将文件指针置于文件末尾。
r是只读,w是只写
r+和w+都是读写,不过w+如果文件不存在,则会创建新文件。
除此之外,还有rb,wb,rb+,r+b,wb+,w+b等二进制方面的操作。

因为read 一次性将文件所有内容读取到内容,如果文件内容过大,则内存压力太大,因此还可以按行读取。

readline,复制操作

def copy(src, dst):
    src_fd = open(src, "r+")
    if not src_fd:
        src_fd.close()
        print("%s 文件打开失败" % (src))
    dst_fd = open(dst, "w+")
    if not dst_fd:
        print("%s 文件打开失败" % (dst))
        dst_fd.close()
        src_fd.close()

    dst_fd.write(src_fd.read())
    src_fd.close()
    dst_fd.close()

如果大文件,则使用按行复制的方式


def copy(src, dst):
    src_fd = open(src, "r+")
    if not src_fd:
        src_fd.close()
        print("%s 文件打开失败" % (src))
    dst_fd = open(dst, "w+")
    if not dst_fd:
        print("%s 文件打开失败" % (dst))
        dst_fd.close()
        src_fd.close()

    while True:
        line = src_fd.readline()
        if not line:
            break
        dst_fd.write(line)

    src_fd.close()
    dst_fd.close()

seek

文件定位指针,类似C语言中的fseek,seek(offset, from) 这样进行使用。

文件目录的操作

在python 中,可以很方便的对文件和目录进行操作。

需要导入 os 模块。

常用操作:

"""
os.rename(源文件名, 目标文件名)
os.remove(文件名)
os.listdir(目录名) 目录列表
os.mkdir(目录名) 创建目录
os.rmdir(目录名) 删除目录
os.getcwd() 获取当前目录
os.chdir() 	修改当前目录
isdir() 判断是否是文件夹
"""

eval

eval 函数可以将字符串当作表达式进行求值。

type(eval('[1,2,3,4,5]')) # list
__import__('os').system('ls')
等价于:
import os
os.system("终端命令")

标签:文件,06,src,dst,fd,close,操作,os
From: https://www.cnblogs.com/zxinlog/p/17910616.html

相关文章

  • 在linux中,用-r还是-p处理递归的文件夹
    在Linux中,递归处理文件夹用-r还是-p选项1.使用-r:-r来表示递归,例如cp和rm。例如:-r通常用于表示递归操作,例如在复制目录或删除目录时使用。示例:复制目录及其内容:cp-rsource_directorydestination_directory递归删除目录及其内容:rm-rdirectory递归地移动目......
  • C#如何实现文件上传与下载
    这篇文章主要介绍C#如何实现文件上传与下载,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!C#实现文件上传代码: public ActionResult Upload()    {      // var pathUrl = "http://" + Request.Url.Authority;      var file ......
  • 成熟且专业的内外网文件交换系统,了解一下!
    近年来全球网络安全威胁态势的加速严峻,使得企业对于网络安全有了前所未有的关注高度。越来越多的企业在网络安全体系建设和日常工作中,都面临一个核心问题,如何保护企业核心数据资产?绝大多数企业都在内部实施了网络隔离,隔离成内外网,互联网与内网,生产网与办公网,办公网与研发网等等,......
  • 【题解】AtCoder agc065_a Shuffle and mod K
    传送门:https://atcoder.jp/contests/agc065/tasks/agc065_a 为了方便理解,我们把要求的东西乘一个$-1$,再把答案序列倒过来;也就是说,我们现在要求$min_{A'}^{A'为A的排列}(\sum_{i=1}^{N-1}((A_{i+1}-A_{i})$$mod$$K))$比较显然的是,如果我们确定了答案序列的第一个数是多......
  • 实验6 模板类、文件IO和异常处理
    任务41#include<iostream>2#include"Vector.hpp"34voidtest(){5usingnamespacestd;67intn;8cin>>n;910Vector<double>x1(n);11for(autoi=0;i<n;++i)12x1.at(......
  • 实验6 模板类、文件IO和异常处理
    实验任务4#pragmaonce#include<iostream>#include<stdexcept>usingnamespacestd;template<typenameT>classVector{public:Vector(intn);Vector(intn,Tvalue);Vector(constVector<T>&vi);~Vector();......
  • 实验六、模板类,文件I/O流,异常处理
    实验四:Vector.hpp://#pragmaonce#include<iostream>#include<stdexcept>usingnamespacestd;template<typenameT>classVector{private:T*data;intsize;public:Vector(intsz=0,constT&value=T());V......
  • 实验六 模板类,文件io和异常处理
    实验任务4#pragmaonce#include<iostream>#include<stdexcept>usingstd::cout;usingstd::endl;template<typenameT>classVector{public://构造函数,默认大小为0Vector(intn=0):size(n),data(newT[n]){if(n<0)......
  • 实验6 模板类、文件I/O和异常处理
    实验任务4Vector.hpp#pragmaonce#include<iostream>#include<stdexcept>#include<string>usingnamespacestd;template<typenameT>classVector{public:Vector(intx=0,constT&value=T());Vector(constVecto......
  • Vscode解决中文乱码和多文件操作
    一、解决多文件操作2.然后创建一个main文件、一个func.h文件、一个func.c文件分别写上代码这是main.c这是func.c文件这是func.h文件二、配置launch.json和tasks.json文件 将下面这个json文件复制拷贝到launch.json去:launch.json{//使用IntelliSense了解相关......